2014-04-19 38 views
0

有没有什么方法可以分析在一个查询请求期间哪些实体已经被加载? 目前我使用延迟加载,它有巨大的性能影响。所以我想要以某种方式分析查询,并包括所有相关的对象。检查包含哪些实体

+0

你能证明你的代码? –

+0

[Debugging Entity Framework SQL语句]的可能重复(http://stackoverflow.com/questions/7901814/debugging-entity-framework-sql-statements) –

+0

我只想获取在查询过程中加载的实体。那可能吗? –

回答

1

您可以处理ObjectMaterialized事件的上下文。

ObjectContext.ObjectMaterialized 

http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.objectmaterialized%28v=vs.110%29.aspx

PS。如果您有DbContext工作,你需要从它首先检索ObjectContext

var context = new YourDbContext(); 
var adapter = (IObjectContextAdapter)context; 
var objectContext = adapter.ObjectContext; 
+0

看起来像我想要的!让我检查它,我会回来并将其标记为已接受的答案!谢谢! –

+1

它会针对由于查询执行而检索到的每个单个对象引发... – Andrew

+1

我不知道您正在开发的功能,但请注意文档中的这种说法以避免可能的错误'“如果某个对象在对象上下文中存在相同的键值,实体框架将不会重新创建该对象,并且不会引发该事件。“' – Andrew