2016-06-30 40 views
3

Ich versuche, den Zugriff auf meine Daten in meiner Anwendung zu bereinigen. Ich habe angefangen, zu einem Repository-Muster zu wechseln, und eines der ersten Probleme, auf die ich gestoßen bin, war der Zugriff auf meine zugehörigen Daten.Wie verwende ich eifriges Laden mit einem Repository-Muster?

Nach einigen Recherchen sah ich, dass Sie .Include() verwenden können, um auf diese verwandten Daten zugreifen, aber ich kann nicht scheinen, um es zu arbeiten noch bin ich sicher, die Art, wie ich diese Einrichtung richtig eingerichtet habe.

Wie verwende ich eifriges Laden innerhalb eines Repository-Musters? Ich habe meinen Code hinzugefügt, um Ihnen eine Straßenkarte zu zeigen, wie ich die Dinge aufliste. Ich habe bestimmte Dinge weggelassen, um die Dinge kurz und einfach zu halten.

IRepository.cs

public interface ICustomerRepository : IDisposable 
{ 
    IEnumerable<customer> GetRelatedData();   
} 

CustomerRepository.cs Hier habe ich den eifrigen Laden eingestellt vom .INCLUDE Spezifizieren und dann die Bezugstabelle definieren.

public IEnumerable<customer> GetRelatedData() 
{ 
    return context.customers 
     .Include(x => x.customer_cars) 
     .ToList(); 
} 

CustomerController.cs ich auf dieser Ebene dachte, die GetRelatedData Verwendung umfasst, wie definiert in dem CustomerRepository.cs machen würde

public ActionResult Index() 
{ 
    var customers = customersRepository.GetRelatedData(); 
    return View(customers); 
} 

die Indexansicht ich jetzt zeigen müssen die Daten, aber ich stecke in diesem Stadium fest, da ich nicht sicher bin, wie ich die zugehörigen Daten aus meiner Sicht zeigen kann.

@model IEnumerable<Titan.Models.customer> 
@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

<p> 
    @Html.ActionLink("Create New", "Create") 
</p> 
<table class="table"> 
    <tr> 
     <th> 
      @Html.DisplayNameFor(model => model.first_name) 
     </th>  
    </tr> 
@foreach (var item in Model) { 
<tr> 

    <td> 
     @Html.DisplayFor(modelItem => item.first_name) 
    </td>  
</tr> 
} 

</table> 

Es könnte sein, dass mein Ansatz ist falsch ich Anleitung von den ASP.NET MVC-Tutorial gemacht habe, aber ich kann den Kopf nicht umgehen, wie ich diese Arbeit in einem Repository-Mustern eifrig Lade Szenario machen. Jede Hilfe wird geschätzt.

+1

Ich habe wieder lesen dies zweimal und ich bin immer noch nicht sicher, was Sie fordern. Fragen Sie, wie Sie zum Kind customer_cars Objekt gelangen? –

+0

Ich frage zwei Dinge wirklich a) Ist meine Vorgehensweise korrekt, um die verwandten Daten durch eifriges Laden innerhalb eines Repository-Musters zu erhalten? und b) Wenn ja, wie bekomme ich das Objekt 'customers_car' in meine Sicht, damit ich diese Daten anzeigen kann? – Yanayaya

+0

Bitte schreiben Sie den Code für Ihre "Kunden" -Klasse –

Antwort

0

Sie sollten Kundenfahrzeugsammlung im Kundenobjekt haben.

Etwas wie folgt aus:

@foreach (var item in Model) { 
<tr> 
    @foreach(var car in item.customer_cars){ 
    <td> 
    @Html.DisplayFor(car => car.model) 
    </td>  
} 
</tr> 
}