システム内で使用できるコードのリストがある次の構造のモデルがあります。
車とエンジンの間には 1 対 1 の関係があるため、エンジンの詳細を Car テーブルにマップして、エンジンがエンティティではなく単なるドメイン モデルの抽象化になるようにしたいと考えています。そのエンジンには、エンジン タイプを説明するコードが含まれています。
私の dbcontext には、システム内の 2 つの集約ルートであるため、CodeList と Car の DbSet があります。これをデータベースにマップしようとすると、次のエラーが発生します。
スキーマ内の各型名は一意である必要があります。型名 'コード' は既に定義されています。
Engine クラスの Navigation プロパティを削除すると問題は解決しますが、個別に検索することなく Code 値にアクセスできるようにしたいと考えています。仮想を削除してコードの id プロパティを直接マップしようとすると、コードはエンティティとして定義されており、複合型として再定義できない可能性があることがわかります。これのどこが間違っているのかわかりませんが、これは単純な使い方のようです。エンジンが複合型として扱われているように見えるため、ナビゲーション プロパティを持つことはできません。
CodeList
{
public int Id {get;set;}
public string Name {get;set;}
public IList<Code> codes {get;set;}
}
Code
{
public int Id {get;set}
public string Value {get;set;}
}
public Car
{
public int Id {get;set;}
public Engine Engine {get;set;}
}
public Engine
{
public int Size {get;set;}
public int TypeId {get;set;}
public virtual Code Type {get;set;}
}