2011-05-18 3 views
12

J'utilise Entity Framework 4.1 code first approach. Je veux faire un chargement enthousiaste en tant que ma configuration dafault, et éviter d'utiliser la méthode d'extension Include dans chaque requête de chargement.Entity Framework 4.1 Chargement par défaut

Je l'ai fait comme dans MSDN recommandé, en changeant simple propriété paresseuse au constructeur DbContext:

public class EMarketContext : DbContext 
{ 
    public EMarketContext() 
    { 
     // Change the default lazy loading to eager loading 
     this.Configuration.LazyLoadingEnabled = false; 
    } 
} 

Malheureusement, cette approche ne fonctionne pas. Je dois utiliser la méthode Include pour effectuer un chargement rapide dans chaque requête. Des idées pourquoi? Merci d'avance.

Répondre

25

Il n'y a pas de configuration par défaut pour le chargement rapide. Vous devez toujours définir Include ou créer une méthode réutilisable qui ajoutera include. Par exemple, vous pouvez placer une méthode similaire à votre contexte:

public IQueryable<MyEntity> GetMyEntities() 
{ 
    return this.MyEntities.Include(e => e.SomeOtherEntities); 
} 
+0

Selon les développeurs ADO.Net, vous avez tort. vérifier ceci: http://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part-6-loading-related-entities.aspx? CommentPosted = true # commentmessage – Sean

+0

Non, je ne me trompe pas. Je connais cet article et il n'y a aucune partie qui décrirait "permanent' Inclure "" –

+0

s'il vous plaît regardez (au milieu): "Désactiver le chargement paresseux pour toutes les entités". – Sean

Questions connexes