いくつかの独立したオブジェクトがあり、それぞれに共通のオブジェクトのリストがあります。例えば、
public class Project
{
public IEnumerable<CommentEntry<Project>> Comments{get;set;}
}
public class Sample
{
public IEnumerable<CommentEntry<Sample>> Comments{get;set;}
}
public class CommentEntry<T> where T: class
{
public int TId {get;set;}
public int CommentEntryId{get;set;}
public DateTime TimeStamp{get;set;}
public string Comment{get;set;}
}
Entity Framework 5 の流暢な API を使用して、プロジェクトとリクエストの CommentEntry テーブルが欲しいです。だから、ここに私のマッピングコードがあります:
modelBuilder.Entity<CommentEntry<Project>>()
.Map(m =>
{
m.ToTable("EngineeringProjectComments");
});
modelBuilder.Entity<CommentEntry<Request>>()
.Map(m =>
{
m.ToTable("SampleRequestComments");
});
移行を試みると、次のメッセージが表示されます。
タイプ CommentEntry`1[Project]' はマップされませんでした。Ignore メソッドまたは NotMappedAttribute データ注釈を使用して、型が明示的に除外されていないことを確認してください。型がクラスとして定義されていること、プリミティブ、ネスト、またはジェネリックではないこと、および EntityObject から継承されていないことを確認してください。
このコンテキストでジェネリックを使用しようとする私の試みの明らかな欠陥を見ることができます。しかし、多くのクラス間で単一のジェネリック型を共有し、独立したテーブルを持つことを可能にする、データベース テーブル構造、クラス コード、またはマッピング コードの代替案を誰かが提案できますか?