2016-10-25 3 views
0

すべてのデータに対してCreateDate/Personなどのデータがあることを確認するために、すべてのテーブルの基本クラスを作成しようとしています。コンテキストタイプのテーブルをコンテキストプロパティとしてテーブル

基本的には、私のテーブルに基本クラスを継承させたいのですが、そのデータをそれぞれのテーブルに分離可能に(テーブルを具体的なタイプごとに)持たせたいと思います。

私はこれらのようなチュートリアルをいくつか見つけましたが、それらの問題は私のテーブルに強く指定されたプロパティを持たないということです。

weblogs.asp.net

ご覧の通り、リンクに彼は、基本クラスのdbsetを作成し、具体的なクラスとは関係がありません。ここで

public class InheritanceMappingContext : DbContext 
{ 
    public DbSet<BillingDetail> BillingDetails { get; set; } 
} 

私のコードです:

public abstract class TrackableBase 
{ 
    public int Id { get; set; } 

    public virtual DateTime CreateDate { get; protected set; } 

    public TrackableBase() 
    { 
     CreateDate = DateTime.Now; 
    } 

} 

public class User : TrackableBase 
{ 
    public string Name { get; set; } 
    public string Email { get; set; } 
} 

答えて

1

あなたは、クラスごとにタイプDbSetのプロパティを追加し、マッピング

public class InheritanceMappingContext : DbContext 
{ 
    public DbSet<User> Users { get; set; } 


    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<User>().Map(m => 
     { 
      m.MapInheritedProperties(); 
      m.ToTable("Users"); 
     }); 
    } 
} 
+0

デュードためOnModelCreatingを追加する必要があり、それはまったく同じです私の質問で共有したリンクさらに、強くタイプするものとしてテーブルにアクセスしたい。このようにして、私のすべての型を含む私のDBContextに1つのリストしか持たないでしょう! –

+0

申し訳ありませんが、気づかなかったです。しかし、基本クラスなしで必要なだけ多くのDbSetを配置することができます。 –

関連する問題