32

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

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 字段?

4

4 回答 4

75

供将来参考:您可以使用数据注释 MSDN EF - Code First Data Annotations

[NotMapped]        
public string AddressAs { get; set; }
于 2013-12-26T14:03:30.387 回答
34

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

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

builder.Entity<Employee>().Ignore(e => e.AddressAs);
于 2012-03-09T12:26:40.070 回答
21

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

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 博客上发表评论,请求此功能 :)

希望这可以帮助

亚历克斯

于 2009-11-30T02:53:01.400 回答
0

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

builder.Entity<Employee>().Property<string>("AddressAs");

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

context.Employees.Where(e => EF.Property<string>(e, "AddressAs") == someValue);
于 2018-07-09T19:53:36.473 回答