データベースで表現したい共有タイプがあります。最初にコードで可能かどうか、またはそれが悪い設計であるかどうかを知る必要があります。(あなたの推論の情報源を指摘してください)。
レイアウトは次のとおりです。
public class A
{
public Guid Id;
public Guid ParentId; // Points to either B or C
public string Foo;
}
public class B
{
public Guid Id;
public virtual ICollection<A> ManyA { get; set; }
// Other fields
}
public class C
{
public Guid Id;
public virtual ICollection<A> ManyA { get; set; }
// Other fields
}
アノテーションを使用してGUIDPKを管理しました[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
。これにより、これが可能になると思います。
目標は、テーブルをA
シンプルに保つことです。不要だと思うので、列B_Id
を持たないようにしたいと思います。将来的には、とのようなものがたくさんあるタイプがあるかもしれません。また、このシナリオは他のいくつかの関係に使用されます。C_Id
D
A
B
C
問題の精神は明らかだと思いますが、EF固有のクラスメンバーは説明のためにそこにいます。彼らが変更する必要がある場合は、そうしてください。
(不自然な例については申し訳ありませんが、これの本質であるIMOを公開しても、問題は明確になりません)。
また、何時間も探してみました!適切な答えを見つけるための適切な命名法がわかりません。私はデータベースとEF全般にかなり慣れていません。