2012-02-16 75 views
4

我增加了我的模型预生成的观点如下所述:实体框架预产生意见

http://blogs.msdn.com/b/adonet/archive/2008/06/20/how-to-use-a-t4-template-for-view-generation.aspx

一切似乎都在编译和代码生成方面是工作,但我不是确定EF是否实际上使用了我预先生成的视图,因为第一个ObjectQuery仍然需要3-4秒才能执行(甚至在生成SQL之前)。

如何确定EF正在使用预生成视图?

+0

对我来说也是同样的问题,但对于预先生成的视图,它会变得更慢,平均每10次测量就会减少200ms。 – 2015-06-22 14:03:32

回答

2

我有同样的问题,但我得到了这么多:你可以在生成的视图类的构造函数中设置一个断点。它会被击中。您还可以在其中一个GetViewx()方法中设置断点。当你查询相应的表时,它会被击中。

我使用的POCO在另一个项目/程序集中,而不是生成的上下文。生成的视图与上下文位于同一个程序集中。首先,尽管它没有受到任何影响,所以我正在寻找并寻找一种方法来连接它们。我得到的最好的是使用ObjectContext.MetadataWorkspace.LoadFromAssembly(...)方法。但即使我没有明确地连接程序集时,断点仍然会被打开(我刚刚发现了这一点)。

我真的100%确定使用了生成的视图吗?不,因为我还有一个相当小的模型有点延迟。但相当确定?是的,尽我所能看到的。

+0

有趣的是,我使用EF 5并遇到与您相同的问题。差异是对我来说我必须使用ObjectContext.MetadataWorkspace.LoadFromAssembly(...)方法来获取它在视图类中的断点,当我省略明确的接线,他们不会被调用,并且我验证了这一点在DotTrace中。不知道这是一个错误还是什么。 – 2012-12-01 06:49:13