我有一个ASP。Net核心API,必须同时运行Sql Server和Sqlite连接,具体取决于客户端设置。在我的应用程序中有几个实例,我正在与Linq进行左外连接。我根据Stefan Steiger的答案在
this question
.
当连接到Sql Server时,查询运行得很好,但是当在Sqlite中运行时,我收到一条警告,说查询将在本地进行计算,并且会对性能造成明显的影响。
例如,在下面的场景中,我有一个Ord记录,它可能有一个与之关联的活动Odt记录。我有一个如下的查询:
var test = await (from order in _context.Ord.AsNoTracking()
from activeOdt in _context.Odt.AsNoTracking()
.Where(x => x.Active)
.DefaultIfEmpty()
select new { order, activeOdt }
).ToListAsync();
仅在Sqlite中,我收到以下警告:
警告:微软。EntityFrameworkCore。查询[20500]
无法翻译LINQ表达式“from Odt activeOdt in{from Odt x in value(Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1[Smart.Common.Odt]),其中([x].OrdId==[order].Id)和[x].Active选择[x]=>DefaultIfEmpty()}。
我是不是写错了这个问题?我是否需要在Sqlite中以不同的方式处理它,或者这可能是实体框架对Sqlite的某种限制?