2012-04-01 5 views
0

Probleme beim Kombinieren von zwei Anweisungen in einem Controller. Beide Anweisungen funktionieren, können aber nicht als ein Element arbeiten.Verbinden von zwei Anweisungen im Controller

Erste Anweisung ist, Daten für einen Benutzer anzuzeigen, wenn sein Benutzername dem angemeldeten Benutzernamen entspricht Dies funktioniert einwandfrei.

public ViewResult Index() 
    { 
     var myrecords = db.Customers.Where(UserData => UserData.UserName.Equals 
       (User.Identity.Name)).ToList(); 

     return View(myrecords); 
    } 

Die zweite Anweisung dient zum Verbinden von Tabellen und zum Anzeigen der Daten. Das funktioniert einwandfrei.

var caradverts = db.CarAdverts.Include(c => c.BodyType).Include(c => c.Car).Include(c => c.Colour).Include(c => c.Customer).Include(c => c.EngineSize).Include(c => c.fuel).Include(c => c.SalesPlan).Include(c => c.Transmission).Include(c => c.year); 



     return View(caradverts.ToList()); 

Nun besteht das Problem darin, beide Anweisungen in einem zu verbinden, sodass nur die Daten für den angemeldeten Benutzer angezeigt werden. obwohl müssen alle diese Include Anweisungen, die Sie wirklich

var caradverts = db.CarAdverts 
        .Include(c => c.BodyType) 
        .Include(c => c.Car) 
        .Include(c => c.Colour) 
        .Include(c => c.Customer) 
        .Include(c => c.EngineSize) 
        .Include(c => c.fuel) 
        .Include(c => c.SalesPlan) 
        .Include(c => c.Transmission) 
        .Include(c => c.year) 
        .Where(c => c.Customer.UserName == User.Identity.Name) 
        .ToList(); 

Sie:

Jede Beratung begrüßen

Antwort

1

Wie es? Es sieht so aus, als ob die meisten von ihnen auf einfache primitive Eigenschaften und nicht auf verwandte Entitäten verweisen.

Auch, weil die meisten wahrscheinlich im ersten Fall, dass Sie Daten von einem einzigen Benutzer möchte ich Ihre Abfrage wie folgt umschreiben:

var userRecord = db.Customers 
        .SingleOrDefault(u => u.UserName == User.Identity.Name); 

Dann wird Ihr Model/View aktualisieren entsprechend mit einem einzigen Customer Datensatz zu beschäftigen und keine Sammlung.

+0

arbeitete nach Bedarf –

+0

Für was es wert ist, sind die meisten dieser 'Include's vollständig redundant. Wenn einer von ihnen auf eine Navigationseigenschaft verweist, wird sie benötigt. Durch den Aufruf von "ToList" wird EF zum Laden der Entitätseigenschaften gezwungen. –