2010-08-23 3 views
1

J'ai 2 classes: utilisateur et Booklinkdossiers d'enfants de la relation ne charge pas (EF4.0, POCO)

 public class User 
     { 
      public int UserID { get; set; } 
      public string Email { get; set; } 
      public string Login { get; set; } 
      public string Surname { get; set; } 
      public string Name { get; set; } 
      public int Points { get; set; } 
      public string Password { get; set; } 

      public IEnumerable<BookLink> BookLinks { get; set; } 
     } 

     public class BookLink 
     { 
      public int LinkID { get; set; } 
      public int BookID { get; set; } 
      public int UserID { get; set; } 
      public DateTime EventDate { get; set; } 

      public Book Book { get; set; } 
      public User User { get; set; } 

     } 

j'ai utilisé nouvelle fonctionnalité EF4.0 - POCO.

Le problème: quand je charge utilisateur entité BookLinks propriété est NULL (il y a des enregistrements enfants dans le tableau Booklinks). Mais d'autres champs (propriétés) ont été chargés correctement et tous (sauf Booklinks) ont leurs valeurs de base de données.

Je reçois des objets du référentiel générique comme celui-ci:

UsersRepository usersRepository = new UsersRepository(); 

      User user = usersRepository.FindByID(1); 

méthode findById est mis en œuvre comme cette

private ObjectSet<T> _entitySet;  
return _entitySet.AsQueryable().Where(predicate).SingeOrDefault(); 

Et Booklinks de la navigation dans utilisateur instance est NULL

Je ne peux pas comprends pourquoi je vois ce comportement. Comment puis-je charger automatiquement les enregistrements enfants?

est ici capture d'écran du concepteur EF http://tinyurl.com/2ct45d5 (si elle vous aidera ...)

+0

Je mets ContextOptions.LazyLoadingEnabled = true mais mon problème n'a pas été résolu :-( – VoimiX

Répondre

2

chargement Lazy ne peut pas travailler sur un POCO à moins que vous déclarez votre association virtual (vous n'avez pas) et permettre la création de procuration (la valeur par défaut, IIRC).

+0

je mets "ContextOptions.ProxyCreationEnabled = true;" et marqué collection BookLinks comme virtuel - « IEnumerable public virtuel BookLinks {get; ensemble; } » Mais mon problème n'a pas été résolu propery Booklinks est toujours NULL – VoimiX

+0

Vous devez également activer LazyLoading ainsi son une des options sur les ContextOptions – zeeshanhirani

+1

je résolu mon problème en ceci:... ICollection virtuel public BookLinks {get ; set;} Mais je ne comprends pas s'il existe d'énormes différences entre IEnume rable et ICollection? – VoimiX