2017-06-02 2 views
0

Ich bin neu zu Entity Framework. Bitte helfen Sie mir mit der folgenden Abfrage.Rechts äußere Verbindung mit Entity-Framework

Ich habe 2 Tabellen, Benutzer und Firmen, und ich muss einen rechten äußeren Join auf Benutzer Tabelle machen.

Hier ist, was ich gerade habe.

List<Company> users = DbContext.Companies       
        .Where(p => !p.User.IsDeleted) 
        .Include(p=> p.User) 
        .OrderBy(p => p.User.FirstName) 
        .ToList(); 

Bitte helfen Sie mir. TIA.

Beziehung ist User.id = Company.Companyid

Beispieldaten

Name   Role    Userid   Companyid 
Test1 Test1 User    210   210 
Test2 Test2 User    1034   1034 
Test3 Test3 Company Admin 2594   2594 
Test4 Test4 Company Admin 5139   5139 

Erwartetes Ergebnis

Name   Role   Userid Companyid 
    Test1 Test1  User   210  210 
    Test2 Test2  User   1034  1034 
    Test3 Test3  Company Admin 2594  2594 
    Test4 Test4  Company Admin 5139  5139 
    Test5 Test5  Super Admin  1   Null 
+0

Was ist der Schlüssel, Beziehung zwischen 2 Tabelle? zeigen Sie Ihre Beispieldaten und was sind Ihre Erwartungen? – hiule

+0

Ihre Beispieldaten scheinen keine Tabelle für Benutzer und Unternehmen zu enthalten, sondern nur eine Tabelle. Auch das erwartete Ergebnis zeigt Daten an, die nicht in den Beispieldaten enthalten sind. Versuch es noch einmal. – NetMage

Antwort

-1

Wenn ich dich nicht falsch verstanden haben, dann unter Möglichkeiten:

List<Company> users = DbContext.Companies 
        .Include(p=> p.User)      
        .Where(p => !p.User.IsDeleted && p.User.CompanyId == p.CompnayId)     
        .OrderBy(p => p.User.FirstName) 
        .ToList(); 

ODER

List<User> users = DbContext.Users.Include(p => p.Company).Where(p => !p.IsDeleted && p.CompanyId == p.Company.CompanyId).ToList(); 
+1

Es bringt nur das innere Join-Ergebnis und nicht den erwarteten rechten äußeren Join. – user7906966

+0

Welches Ergebnis möchten Sie erhalten? Nicht gelöscht Benutzer Firma weise? Recht ? –

+0

Ich möchte alle Benutzer aus der Benutzertabelle unabhängig von der Company-Tabelle abrufen, in der das Flag von Isteleted in der Benutzertabelle falsch sein sollte. – user7906966

0

können Sie abfragen, wie

List<User> users = DbContext.Users.Include(p => p.Company).Where(p => !p.IsDeleted).ToList(); 

es Benutzern und Unternehmen geladen werden. Wenn der Benutzer einem Unternehmen zugeordnet ist, wird EF auch das Unternehmen laden. Wenn der Benutzer keinem Unternehmen zugeordnet ist, bleibt die Unternehmenseigenschaft null.

Verwandte Themen