我有一个奇怪的行为,试图执行一个将ObjectQuery MergeOption声明为"NoTracking"的查询,在这种情况下,实体框架不应附加任何实体,也不应创建相对的ObjectStateEntry来跟踪实体状态.
问题是,不是增加性能而是变得更糟,相同的查询在默认合并(即AppendingOnly)时需要10秒,如果我尝试指定notracking则需要1分钟
有人对此有解释吗?
基于这个例子
http://msdn.microsoft.com/en-us/library/system.windows.data.binding.validatesonexceptions.aspx
似乎ValidatesOnExceptions负责捕获自定义异常并将其添加到Validation.Errors集合中.
问题是即使将ValidatesOnExceptions设置为false,我也有相同的行为
有人可以解释我错过了什么吗?
谢谢
我有一个通过Entity Framework 4执行查询的服务,它没有任何问题,直到现在我尝试在带有IIS 6的Windows Server 2003或带有IIS 7的Windows 7上执行它.
现在,当我尝试在Windows Server 2008 R2和IIS 7.5上运行相同的服务时,相同的查询变得非常慢(从200ms到3秒).分析我发现的问题,当它试图生成执行sql查询时需要很长时间,只需调用ToTraceString()需要将近3秒.
我不知道OS和IIS版本是否可能成为问题,但它们是我看到的唯一差异.
谢谢
更新
我发现问题在Entity Framework生成查询时有效,而且它取决于处理器,Intel运行得非常好,AMD运行得慢得多,如果应用程序运行多了就会变得更糟-cores,迫使w3wp使用单核,它会比英特尔解决方案更好但速度更慢
performance linq-to-entities entity-framework entity-framework-4