代码之家  ›  专栏  ›  技术社区  ›  James Hogle

实体框架2.0左外联接在Sqlite中本地计算

  •  2
  • James Hogle  · 技术社区  · 7 年前

    我有一个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的某种限制?

    0 回复  |  直到 7 年前
    推荐文章