通用实体框架6.1.3中的条件

时间:2017-04-09 17:13:53

标签: entity-framework entity-framework-6

我正在构建一个使用Entity Framework 6.1.3查询数据库数据的应用程序。

我已经使用过这个功能:

private IQueryable<T> SearchPropertyText(IQueryable<T> records, Func<T, string> property, TextSearch search)
{
    switch (search.Mode)
    {
        case TextSearchMode.ContainIgnoreCase:
            records = records.Where(x => property(x).Contains(search.Text));
            break;
        case TextSearchMode.Equal:
            records = records.Where(x => property(x).Equals(search.Text));
            break;
        case TextSearchMode.EqualIgnoreCase:
            records = records.Where(x => property(x).Equals(search.Text, StringComparison.OrdinalIgnoreCase));
            break;
        default:
            records = records.Where(x => property(x).Contains(search.Text));
            break;
    }
    return records;
}

此功能用于帮助我通过传递属性名称和文本搜索来过滤文本属性。例如:

users = SearchPropertyText(users, user => user.Email, emailSearch);

此功能在Entity Framework Core 1.1.1上正常运行。但是当我将此代码复制到Entity Framework 6.1.3时。它给了我一个例外:

LINQ表达式节点类型&#39; Invoke&#39; LINQ to Entities不支持。

有人可以帮我吗?

谢谢,

0 个答案:

没有答案