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

Yog*_*esh 26 .net c# poco entity-framework-4 ef-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; }
}
Run Code Online (Sandbox Code Playgroud)

如何从数据库中排除AddressAs字段?

mar*_*lde 62

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

[NotMapped]        
public string AddressAs { get; set; }
Run Code Online (Sandbox Code Playgroud)


kmp*_*kmp 32

我知道这是一个老问题,但万一有人(像我一样)来自搜索...

现在可以在实体框架4.3中执行此操作.你会这样做:

builder.Entity<Employee>().Ignore(e => e.AddressAs);
Run Code Online (Sandbox Code Playgroud)

  • 这会是全球性的吗?我的意思是,如果我想为这一个电话做什么呢?我可以把它重新打开,可以这么说吗? (4认同)
  • 或者在VB`builder.Entity(Of Employee).Ignore(Function(e)e.AddressAs)` (2认同)

Ale*_*mes 21

在当前版本中,排除属性的唯一方法是显式映射所有其他列:

builder.Entity<Employee>().MapSingleType(e => new {
  e.Id,
  e.Name,
  e.FatherName,
  e.IsMale,
  e.IsMarried
});
Run Code Online (Sandbox Code Playgroud)

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

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

builder.Entity<Employee>().Exclude(e => e.AddressAs);
Run Code Online (Sandbox Code Playgroud)

我建议你告诉你在EFDesign博客上发表评论,请求这个功能:)

希望这可以帮助

亚历克斯

  • 我意识到,今天做到这一点的唯一方法就是你提到的方式.我将它发布在EFDesign博客上很长一段时间:http://blogs.msdn.com/efdesign/archive/2009/10/12/code-only-further-enhancements.aspx (3认同)