EF Core无法在linq表达式中转换简单

时间:2019-06-11 10:54:51

标签: c# sql-server entity-framework-core

我们最近升级到使用ef core 2.1.8,现在我们的某些查询失败了。

诸如where子句之类的简单操作使ef在本地对其求值。

我有一个语言表,带有一个name列,我想选择name不为null的所有内容,但是这两种方法都不起作用:

SELECT cmg, effdate, LEAD(DATEADD(DAY, -1, effdate),1, getdate()) OVER (PARTITION BY cmg ORDER BY effdate ASC) as enddate
FROM testcmg
ORDER BY cmg, effdate DESC

两个都在本地评估。名称是一个简单的字符串/ nvarchar列。

编辑:

语言是部分类,如下所示:

var searchQuery  = from q in context.Language
                          where (q.Name != null) select q;

var searchQuery = context.Language.Where(x => x.Name != null);

具有以下配置:

public partial class Language
{
    public Language()
    {
        Segmentation = new HashSet<Segmentation>();
        SystemTranslation = new HashSet<SystemTranslation>();
    }

    public int Id { get; set; }

    [Required]
    [MaxLength(255)]
    public string Culture { get; set; }

    public ICollection<Segmentation> Segmentation { get; set; }
    public ICollection<SystemTranslation> SystemTranslation { get; set; }
}

public partial class Language : IIdentifiable<int>, ISearchable
{
    public string Name => CultureInfo.GetCultureInfo(Culture).DisplayName;
}

1 个答案:

答案 0 :(得分:0)

事实证明,我正在尝试查询计算所得的属性,这当然意味着ef无法在服务器端使用它,因为不存在该名称的列。