Le chargement paresseux ne fonctionne pas pour moi dans le cadre de l'équité 4

J'essaie d'activer Lazy Loading dans un context EF4.

Le code qui essaie de charger datatables est:

using (IUnitOfWork uw = new EFUnitOfWork()) { foreach (Document doc in uw.Documents.All) { Console.WriteLine("Name: {0} Description: {1} Category: {2}", doc.Name, doc.Description, doc.DocumentCategory.Name); } } 

J'expérimente les templates Repository et Unit of Work, mais si je comprends bien, la command ci-dessous devrait fonctionner.

 ctx.ContextOptions.LazyLoadingEnabled = true; 

Le problème que j'ai est lors de l'access à doc.DocumentCategory.Name, j'obtiens une exception NullReferenceException.

Pourquoi ces données ne sont-elles pas chargées paresseusement?

Si DocumentCategories est chargé, la propriété DocumentCategory est résolue.

Ma class de document est définie comme suit:

 public class Document { public Document() { } public Document(int id) { Id = id; } public virtual int Id { get; set; } public virtual ssortingng Name { get; set; } public virtual ssortingng Description { get; set; } public virtual int DocumentCategoryId { get; set; } public virtual bool Deleted { get; set; } public DocumentCategory DocumentCategory { get; set; } public override ssortingng ToSsortingng() { return Name; } } 

La propriété DocumentCategory doit également être marquée comme virtuelle afin que le chargement paresseux soit pris en charge. Jetez un oeil à http://msdn.microsoft.com/en-us/library/dd468057.aspx

Document.DocumentCategory est-il déclaré comme virtuel? EF exige ceci, pour générer un type de proxy, qui effectuera réellement le chargement paresseux lorsque vous accédez à la propriété. (Sinon, EF ne sait pas, lorsque vous accédez à la valeur de la propriété)

En outre, si DocumentCategory est déjà virtuel, il peut exister d'autres propriétés qui permettent à EF de générer un type de proxy. Inspectez une instance "Document" avec le débogueur à voir, s'il s'agit en fait d'un type de proxy.