2009-08-06 7 views
0

J'ai configuré 4 tables distinctes qui ont des relations fk entre elles. Le principal problème que j'ai est entre une table appelée EmployeeQuestions et des tables de questions. J'utilise Entity pour modéliser les objets. Quand j'obtiens mon objet EmployeeQuestions, je le vérifie pour m'assurer que la relation entre EmployeeQuestions et Employee est présente et que je peux obtenir toutes les informations à travers cette relation, cependant la relation entre EmployeeQuestions et Questions est toujours nulle. J'ai vérifié pour m'assurer que la relation a été installée correctement et c'est. J'ai également essayé de faire une recherche sur une liste de toutes les questions EmployeeQuestions et je peux interroger ces résultats pour le QuestionID dans le tableau de questions mais je ne peux pas obtenir le champ de description.ADO.net Entity One Relationship renvoie toujours la valeur null

Je suis très nouveau à travailler avec des bases de données du tout, toute aide serait très appréciée.

Merci.

Répondre

1

Pouvez-vous nous montrer la requête que vous utilisez?

Par défaut, Entity Framework va pas parcourir les associations pour récupérer les objets "à l'autre bout" de l'association - vous devrez le faire explicitement.

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

Dans ce cas, vous "Employee.Questions" association (en supposant qu'il est appelé que) serait toujours NULL - par la conception.

Vous pouvez spécifier un « Inclure » dans votre requête:

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

et maintenant dans ce cas, lors de la récupération d'un employé, les associés « questions » seraient également chargés.

Ou vous pouvez faire:

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

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

explicitement et en charge de code les objets associés. Comme cela a été considéré par beaucoup de gens comme un défaut, dans EFv4, il y aura une option pour activer ce chargement automatique "différé" - mais encore une fois, vous devez le faire explicitement et sciemment.

Marc

+0

Merci beaucoup, c'était vraiment frustrant. –

Questions connexes