使用Entity Framework 4和Code-First从数据库中排除字段/属性

我想知道有没有办法从数据库中排除一些字段? 例如:

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().MapSingleType(e => new { e.Id, e.Name, e.FatherName, e.IsMale, e.IsMarried }); 

由于未引用AddressAs,因此它不是实体/数据库的一部分。

EF团队正在考虑添加以下内容:

 builder.Entity().Exclude(e => e.AddressAs); 

我建议你告诉我在EFDesign博客上留言,请求这个function:)

希望这可以帮助

亚历克斯

供将来参考:您可以使用数据注释MSDN EF – 代码优先数据注释

 [NotMapped] public string AddressAs { get; set; } 

我知道这是一个老问题,但万一有人(像我一样)从搜索中找到它…

现在可以在entity framework4.3中执行此操作。 你会这样做:

 builder.Entity().Ignore(e => e.AddressAs); 

也可以在DbContext中将要忽略的列添加为Shadow属性 :

 builder.Entity().Property("AddressAs"); 

然后您可以像这样查询该列:

 context.Employees.Where(e => EF.Property(e, "AddressAs") == someValue);