2017-05-30 3 views
0

Ich habe 3 Tabellen wie unten BildFügen Sie mehrere Tabellen mit EntityFramework

Tables

Und ich habe das Entity Framework codefirst Modell auf der C# (Auto generiert)

Ich versuche, das zu bekommen IEnumerable von Entitäten mit der enthaltenen Liste der Anhänge für jedes Element, und ich möchte, dass diese Anhangselemente für jede Anlage in AttachmentType enthalten sind.

für eine bessere Demonstration ich brauche:

IEnumerable<Registry> registries = GetTableData(); 
string oneofthedesiredname = registries 
.First() 
.Attachments 
.First() 
.AttachmentType.Name; //I want that, this definition works but its null 

mit GetTableData() Methode ist wie

public IEnumerable<Registry> GetTableData() 
    { 
     IQueryable<Registry> _registries = _entities.Registry; 
     IEnumerable<Registry> data; 
     data = _registries 
     .Where(p=>p.IsDeleted==false) 
     .Include(p=>p.Attachments.Where(x=>x.IsDeleted==false)) 
     .AsEnumerable();//this query should have change because I cant get Attachmenttypes from this    
     return data; 
    } 

Sie alle danken, Ihr geschätzt werden können.

+0

Vielleicht bin ich blind, aber ich kann nicht einen Weg, um von Rgistries zu Attachments nur Attachments kennt Register finden. Könnten Sie bitte Ihre EF-Code-Modelle posten? – Taysumi

Antwort

0

Sie müssen zusätzliches Include für AttachmentType auch in der Abfrage hinzufügen.

public IEnumerable<Registry> GetTableData() 
{ 
    IQueryable<Registry> _registries = _entities.Registry; 

    IEnumerable<Registry> data = _registries 
     .Include(x => x.Attachments) 
     .Include("Attachments.AttachmentType") 
     // here do necessary filtering with Where() 
     // ... 

    return data; 
} 
0

Verwendung dieses funcation

public IEnumerable<Registry> GetTableData() 
    { 
     IQueryable<Registry> _registries = _entities.Registry,where(m=>m.IsDeleted==false); 
     IEnumerable<Registry> data; 
     data = _registries  .Include(p=>p.Attachments.Where(x=>x.IsDeleted==false)). 
include(p=>p.AttachmentType).AsEnumerable(); 
     return data; 
    } 
Verwandte Themen