EFCore Linq表达式无法翻译,将在本地进行评估

时间:2018-03-21 21:30:34

标签: entity-framework entity-framework-core

我正在尝试创建一个可以在数据库端执行的编译查询。我的想法是在我的代码中创建一个可重用的函数。但EF Core仍然说这个查询无法转换为sql。

  

以下是可重复使用的expression

public static class DisplayFilters
{
    public static Expression<Func<DisplayItem, bool>> isActiveItem = (x) => x.IsDeleted == false;
}
  

这是EFCore实体调用

using df = namespace.DisplayFilters;
...
    [HttpGet]
    public IActionResult Get()
    {
        IEnumerable<DisplayItem> xItem = (from a in _context.DisplayItem.AsQueryable()
                                          where df.isActiveItem.Compile()(a)
                                          select a);
        return Ok(xItem);
    }

1 个答案:

答案 0 :(得分:1)

我认为你不能在查询理解语法中嵌入Expression类型表达式,但你可以用lambda语法来实现:

IEnumerable<DisplayItem> xItem = _context.DisplayItem
                                 .Where(df.isActiveItem);