2016-09-28 2 views
0

Ich möchte Tabellen basierend auf der Definition des Modells mithilfe von linq verknüpfen. Beispiel dafür, was ich will:Verknüpfen Sie LINQ-Tabellen basierend auf der Modelldefinition

von Abteilung in User.departments ...

Meine Klassen sind:

Benutzerklasse:

public class User 
{ 
    public User() { 
     Departments = new List<Department>(); 
    } 
    public int UserId { get; set; } 
    public string UserName { get; set; } 
    public virtual ICollection<Department> Departments { get; set; } 
} 

DEPARTMENT KLASSE:

public class Department 
{ 
    public int DepartmentId { get; set; } 
    public string DepartmentName { get; set; } 
    public virtual User User { get; set; } 
} 

Ich bin in der Benutzerklasse zu schaffen dies:

public bool hasDepartment(int DepartmentId, int UserId) 
{ 
    var test = from department in User.departments 
    //... 
} 

Aber ich habe diese Nachricht: ‚User‘ enthält keine Definition für ‚Abteilungen‘.

Ich erstelle eine ASP.NET MVC-Anwendung. Mache ich etwas falsch?

+1

warum 'hier virtual'? –

+0

LINQ ist korrekt, das Benutzerobjekt hat keine Definition für 'Abteilungen'. Es gibt jedoch einen für "Abteilungen" (Gehäuse beachten). Ich stimme auch @Div zu, warum virtuelle Eigenschaften? Werden Sie diese irgendwo anders in anderen Unterklassen überladen? –

+1

@Div am wahrscheinlichsten für Lazy Loading: http://Stackoverflow.com/a/5599270/3330348 – PiotrWolkowski

Antwort

1

Benutzerhandbuch enthält keine Definition für ‚

Ausgabe‘ Abteilungen existieren seit Departments innerhalb User class keine statische Sammlung, so dass Sie ein Objekt von User class müssen die Departments ICollection Eigenschaft zuzugreifen

da im User class, ändern Sie den Zugriff wie folgt:

var test = from department in Departments Oder

`var test = from department in this.Departments` 

Idee ist, gleiche object basierten Zugriff zu haben, statt static Zugang

1

Wenn die Rechtschreibung Ihrer Nachricht genau ist, muss der Grund für den Fehler departments mit niedriger d sein. Die Eigenschaft 'Departments' in der Klassendefinition ist capital D.

0
public bool hasDepartment(int DepartmentId, int UserId) 
{ 
    var test = from department in Departments 
    ... 
} 
+1

gestellt wurde. Während dieser Code die Frage beantworten kann, verbessert ein zusätzlicher Kontext, warum und/oder wie dieser Code die Frage beantwortet, seinen langfristigen Wert. – ryanyuyu

Verwandte Themen