2009-08-06 3 views
0

Ich habe 4 separate Tabellen eingerichtet, die fk-Beziehungen zwischen allen haben. Das Hauptproblem, das ich habe, ist zwischen einer Tabelle namens EmployeeQuestions und Fragen Tabellen. Ich verwende Entity, um die Objekte zu modellieren. Wenn ich mein EmployeeQuestions-Objekt abrufe, überprüfe ich es, um sicherzustellen, dass die Beziehung zwischen EmployeeQuestions und Employee vorhanden ist und ich alle Informationen über diese Beziehung abrufen kann. Die Beziehung zwischen EmployeeQuestions und Questions ist jedoch immer null. Ich habe überprüft, um sicherzustellen, dass die Beziehung richtig eingerichtet wurde und es ist. Auch ich habe versucht, eine Suche auf einer Liste aller EmployeeQuestions zu machen, und ich kann diese Ergebnisse für die QuestionID in der Fragetabelle abfragen, aber ich kann das Beschreibungsfeld nicht bekommen.ADO.net Entity One Relationship gibt immer null zurück

Ich bin sehr neu in der Arbeit mit Datenbanken überhaupt, jede Hilfe würde sehr geschätzt werden.

Danke.

Antwort

1

Können Sie uns die Suchanfrage zeigen, die Sie verwenden?

Standardmäßig wird Entity Framework nicht Verweise auf die Objekte "am anderen Ende" der Assoziation zu greifen - Sie müssen dies explizit tun.

var emps = from e in ObjectContext.Employees 
      where (some condition) 
      select e; 

In diesem Fall Sie "Employee.Questions" Vereinigung (unter der Annahme, dass genannt wird) würden immer NULL sein - durch Design.

Sie können angeben, ein „Include“ in Ihrer Suchanfrage:

var emps = from e in ObjectContext.Employees.Include("Questions") 
      where (some condition) 
      select e; 

und jetzt in diesem Fall, wenn ein Mitarbeiter das Abrufen, die damit verbundenen „Fragen“ würde auch geladen werden.

Oder Sie tun können:

var emps = from e in ObjectContext.Employees 
      where (some condition) 
      select e; 

foreach(Employee e1 in emps) 
{ 
    if(!e1.QuestionReference.IsLoaded) 
    { 
    e1.QuestionReference.Load(); 
    } 
} 

explizit und in Code lädt die zugehörigen Objekte.

Da dies von vielen als Mangel angesehen wurde, wird es in EFv4 eine Option geben, dieses automatische "verzögerte" Laden einzuschalten - aber Sie müssen es erneut explizit und wissentlich tun.

Marc

+0

Vielen Dank das war wirklich frustrierend. –

Verwandte Themen