2009-03-27 6 views
1

Ce que je fais fonctionne, mais c'est juste faux, je le sais.Comment charger correctement les références d'objet avec ADO.net Entity Framework

public Profile GetProfile(int id) 
    { 
     Profile profile = (
      from u in en.User where u.UserID == id 
       select u.Profile.FirstOrDefault() 
      ).First(); 

     if (profile.UserReference.Value == null) 
      profile.UserReference.Load(); 

     return profile; 
    } 

Profile.UserID est un FK lié à User.UserID. Ainsi, Profile.UserID n'est pas inclus dans Entity Model par Entity Framework, c'est pourquoi ma requête linq recherche d'abord l'objet User, puis sélectionne l'objet Profile correspondant (ce qui me semble très sale).

Quelqu'un peut-il offrir une meilleure solution pour:

  1. l'objet de recherche de profil via User.UserID.
  2. Chargez la référence d'objet Utilisateur dans l'objet Profil retourné.

Merci d'avance!

Répondre

4

Essayez d'utiliser la méthode Include

public Profile GetProfile(int id) 
{ 
    return (from p in db.Profiles.Include("User") 
      where p.User.UserId == id 
      select p).FirstOrDefault(); 
} 

Cette méthode renvoie l'objet de profil, avec la référence de l'utilisateur déjà chargée.

+0

En arrière de ce que je voulais, mais en utilisant la méthode Include et une syntaxe similaire, j'ai pu résoudre mon problème. Merci bendewey! – Kappers

+0

Est-ce que cette requête fonctionne mieux pour votre scénario? – bendewey

+0

Oui, c'est exactement ce que j'ai changé aussi. – Kappers

Questions connexes