从实体框架4代码优先数据库排除字段/属性
-
19-09-2019 - |
题
我会想知道,有没有办法排除从数据库中的某些字段?为例如:
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public string FatherName { get; set; }
public bool IsMale { get; set; }
public bool IsMarried { get; set; }
public string AddressAs { get; set; }
}
如何排除AddressAs字段从数据库?
解决方案
在当前版本排除一个属性的唯一方式是显式地映射所有其他列:
builder.Entity<Employee>().MapSingleType(e => new {
e.Id,
e.Name,
e.FatherName,
e.IsMale,
e.IsMarried
});
由于AddressAs未被引用它不是实体/数据库的一部分。
在EF团队的考虑的将是这样的:
builder.Entity<Employee>().Exclude(e => e.AddressAs);
我建议你告诉留在EFDesign博客发表评论,要求这样的特征:)
希望这有助于
亚历
其他提示
供将来参考:可以使用数据的注释 MSDN EF - 代码优先数据注释
[NotMapped]
public string AddressAs { get; set; }
我知道这是一个老问题,但万一有人(像我)来从搜索...
现在它是在实体框架4.3可能做到这一点。你会做它像这样:
builder.Entity<Employee>().Ignore(e => e.AddressAs);
也有可能添加要忽略的的阴影属性的在的DbContext:
builder.Entity<Employee>().Property<string>("AddressAs");
然后,可以在像这样该列查询:
context.Employees.Where(e => EF.Property<string>(e, "AddressAs") == someValue);
不隶属于 StackOverflow