小编典典

忽略Entity Framework 4.1 Code First中的类属性

c#

我的理解是,该[NotMapped]属性直到CTP中的EF 5才可用,因此我们不能在生产中使用它。

如何在EF 4.1中标记要忽略的属性?

更新: 我注意到其他奇怪的事情。我可以使用该[NotMapped]属性,但是由于某些原因,即使使用public bool Disposed { get; private set; }标记为,EF
4.1仍会在数据库中创建一个名为Disposed的列[NotMapped]IDisposeable当然,该类实现了,但我不认为这应该有多重要。有什么想法吗?


阅读 346

收藏
2020-05-19

共1个答案

小编典典

您可以使用NotMapped属性数据注释来指示Code-First排除特定属性

public class Customer
{
    public int CustomerID { set; get; }
    public string FirstName { set; get; } 
    public string LastName{ set; get; } 
    [NotMapped]
    public int Age { set; get; }
}

[NotMapped]属性包含在System.ComponentModel.DataAnnotations名称空间中。

您也可以在类中使用Fluent API覆盖OnModelCreating函数来执行此操作DBContext

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   modelBuilder.Entity<Customer>().Ignore(t => t.LastName);
   base.OnModelCreating(modelBuilder);
}

http://msdn.microsoft.com/zh-
CN/library/hh295847(v=vs.103).aspx

我检查的版本是 EF 4.3,这是使用NuGet时可用的最新稳定版本。


编辑2017年9月

Asp.NET Core(2.0)

数据注解

如果您正在使用asp.net core( 在撰写本文时为2.0 ),则该 [NotMapped]属性可以在属性级别上使用。

public class Customer
{
    public int Id { set; get; }
    public string FirstName { set; get; } 
    public string LastName { set; get; } 
    [NotMapped]
    public int FullName { set; get; }
}

流利的API

public class SchoolContext : DbContext
{
    public SchoolContext(DbContextOptions<SchoolContext> options) : base(options)
    {
    }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Customer>().Ignore(t => t.FullName);
        base.OnModelCreating(modelBuilder);
    }
    public DbSet<Customer> Customers { get; set; }
}
2020-05-19