如何查询实体框架中的非映射属性

本文关键字:映射 属性 框架 实体 何查询 查询 | 更新日期: 2023-09-27 18:10:48

我正在使用这里发现的过程通过封装转换映射属性的类型(映射时转换值)。就像@Mykroft说的,这可以防止您对数据库编写LINQ查询。

使用下面的示例属性,我如何告诉Linq to Entities在编写语句db.Employee.Where(b => b.IsActive);时使用IsActiveBool ?

[Column("IsActive")]
protected string IsActiveBool { get; set; }
[System.ComponentModel.DataAnnotations.Schema.NotMapped]
public bool IsActive
{
    get { return IsActiveBool == "Y"; }
    set { IsActiveBool = value ? "Y" : "N"; }
}

如何查询实体框架中的非映射属性

使用您的db.Employee.Where(b => b.IsActive);的简单示例,您可以这样写:

db.Employee.ToList().Where(b => b.IsActive);

请记住,这将拉回Employee表中的所有行,然后在IsActive上进行过滤。如果您希望SQL server为您执行过滤(您应该这样做,因为这对于任何实际大小的表都不是一个好的解决方案),那么您需要将其编写为:

db.Employee.Where(b => b.IsActiveBool == "Y");