我需要理解这个。
在TSQL代码生成方面,EF5.0和EF6.*之间存在很大的差异。
在我的代码中,这是我的LINQ语句。
EntityFramework 5.0 生成了一个简单快速的 TSQL WHERE 语句,像这样的语句是完美的。
但是EntityFramework 6.*生成的语句更加复杂和缓慢。
该字段“article_EAN17”也有索引。 然而,EF6.*初始化需要很长时间,但是是否有一种方法在EF6.*中生成一个简单的WHERE语句,使用属性或类似的东西? 我尝试了string.Equals()、string.Compare(),交换参数,但什么也没改变。 这篇文章为什么Entity Framework 6为简单查找生成复杂的SQL查询?解释了差异,但是否有一种方法可以强制EF生成简单的TSQL。
在我的代码中,这是我的LINQ语句。
var qry2 = context.viw_overview_1.Where(i => i.article_EAN17 == ean).Select(i => i.article_id).Take(200);
EntityFramework 5.0 生成了一个简单快速的 TSQL WHERE 语句,像这样的语句是完美的。
... WHERE [Extent1].[article_EAN17] = @p__linq__0
00.0960096ms in SSMS
但是EntityFramework 6.*生成的语句更加复杂和缓慢。
... WHERE (([Extent1].[article_EAN17] = @p__linq__0) AND ( NOT ([Extent1].[article_EAN17] IS NULL OR @p__linq__0 IS NULL))) OR (([Extent1].[article_EAN17] IS NULL) AND (@p__linq__0 IS NULL))
45.3665362ms in SSMS
该字段“article_EAN17”也有索引。 然而,EF6.*初始化需要很长时间,但是是否有一种方法在EF6.*中生成一个简单的WHERE语句,使用属性或类似的东西? 我尝试了string.Equals()、string.Compare(),交换参数,但什么也没改变。 这篇文章为什么Entity Framework 6为简单查找生成复杂的SQL查询?解释了差异,但是否有一种方法可以强制EF生成简单的TSQL。