我正在使用此处找到的过程(Convert value when mapping)通过封装转换映射属性的类型。就像@Mykroft所说的那样,这可以防止您针对数据库编写LINQ查询。
使用下面的示例属性,编写语句db.Employee.Where(b => b.IsActive);
时如何告诉Linq to Entities使用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");