2011-09-07 41 views
0

如何從EF 4.1的POCO代理中獲取DbContext?如何從EF 4.1的POCO代理獲取DbContext?

我可以在調試器中看到ObjectContext,但找不到DbContext。

+1

你不應該需要這個。如果你需要這個,你應該考慮重構你的代碼。 –

+0

謝謝拉迪斯拉夫。這說服我不要依賴這種方法。目前我只是搞亂了一些擴展方法,並沒有非常嚴格的性能需求。 – Benjamin

回答

1

DbContext有這個重載的構造函數:

public DbContext(ObjectContext objectContext, bool dbContextOwnsObjectContext) 

所以,你可以試試這個創建DbContext包裝你從你的代理檢索到的objectContext:您導出的上下文創建一個合適的構造函數...

public class MyContext : DbContext 
{ 
    public MyContext(ObjectContext objectContext,bool dbContextOwnsObjectContext) 
     : base(objectContext, dbContextOwnsObjectContext) 
    { 
    } 
} 

...然後調用它是這樣的:

var myContext = new MyContext(objectContext, false); 
+0

謝謝!不幸的是,當我嘗試使用msdn博客中的「Tip 24」來獲取ObjectContext時,我無法獲得實體的SourceQuery,因爲它處於Added狀態。我想沒有簡單的方法。我能否以某種方式獲得反射派生的上下文? – Benjamin

+0

@Benjamin。我沒有任何線索。提示24中的注意事項聽起來不太好,特別是關於性能,反射(如果有任何方法)不會變得更好。 – Slauma

+0

感謝您的幫助Slauma。如果實體沒有被添加或分離,它似乎工作得很好。 – Benjamin