2011-02-15 3 views
3

EF CTP 5. J'ai une seule instance où je voudrais obtenir l'entité non-protégée. Je n'arrive pas à trouver un moyen de le faire. Je ne veux pas désactiver la création de proxy tous ensemble, j'en ai juste besoin pour cette requête. Quelqu'un peut-il aider?framework d'entité ctp5 get entité non-protégée

Voici un exemple simple:

var myEntity = DbContext.Entities.Find(1); 
var unproxy = myEntity...? 
+0

Pourquoi avez-vous besoin de ça? –

Répondre

3

Je crois que la seule possibilité est de créer une nouvelle instance de DbContext et tourner la création proxy off suffit d'exécuter cette requête. La raison en est que DynamicProxy est un type créé en cours d'exécution qui dérive de votre type d'entité d'origine et ajoute une fonctionnalité de suivi et de chargement paresseux. Vous ne pouvez pas supprimer le proxy une fois que vous l'avez créé de cette façon. Essayez ceci:

using (var context = new MyDbContext(connectionString)) 
{ 
    ((IObjectContextAdapter)context).ObjectContext.ContextOptions.ProxyCreationEnabled = false; 
    var myEntity = context.Entities.Find(1); 
} 
+0

Merci, je vais essayer. Pas optimal, et pourrait être un PITA. Le problème est que j'essaye de cacher ceci, et si je cache le proxy alors il retient ChangeTracker et cause tous les types de problèmes. –

+0

Si le seul problème est avec ChangeTracker, vous pouvez essayer d'exécuter la requête avec .AsNoTracking() (et peut-être aussi désactiver le chargement paresseux). –

+0

Je vais donner un coup de feu –