Entity Framework 4.1 Code First でクラス プロパティを無視する 質問する

Entity Framework 4.1 Code First でクラス プロパティを無視する 質問する

私の理解では、この[NotMapped]属性は現在 CTP にある EF 5 までは利用できないため、運用環境では使用できません。

EF 4.1 でプロパティを無視するようにマークするにはどうすればよいですか?

更新:他にも奇妙な点があることに気付きました。属性は機能するようになりましたが、何らかの理由で、EF 4.1 はが でマークされている[NotMapped]にもかかわらず、データベースに Disposed という名前の列を作成します。クラスは を実装しますが、それがどう問題になるのかわかりません。何かご意見はありますか?public bool Disposed { get; private set; }[NotMapped]IDisposeable

ベストアンサー1

NotMapped属性データアノテーションを使用して、特定のプロパティを除外するようにコードファーストに指示することができます。

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オーバーライドしてこれを行うこともできます。OnModelCreatingDBContext

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

http://msdn.microsoft.com/en-us/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; }
}

おすすめ記事