1

更新:Id on のプロパティNavigationPropertyClassはデータベースで生成されたものではないことに注意してください。私の実際のモデルでNavigationPropertyClassは、ここには表示されていない階層スキーム (TPH を使用) の一部でもありNavigationPropertyClassDerivedClass1インスタンスとインスタンスのコレクションがありDerivedClass2ますが、これは、元の基本クラスから継承するすべてのクラスに必ずしも当てはまるとは限りません。NavigationPropertyClass導出されます。


私のモデルの一部は次のようになります (簡潔にするために他のプロパティとコンストラクターは省略されています)。

//Many other classes inherit from this class
//and many of the derived classes are not composed of DerivedClass1 or DerivedClass2
public abstract SomeOtherBaseClass{
    public int Id {get; set;} //not database generated, set in the constructor
}

public NavigationPropertyClass: SomeOtherBaseClass{
    public DerivedClass1 Derived1 {get; set;}
    public virtual ICollection<DerivedClass2> Derived2Collection {get; set;}
}

public abstract class BaseClass{
    public int Id {get; set;}
    //other properties shared by derived classes
}

public class DerivedClass1: BaseClass{
    public NavigationPropertyClass NavigationProperty {get; set;}
    //other properties pertinent to DerivedClass1
}


public class DerivedClass2: BaseClass{
    public NavigationPropertyClass NavigationProperty {get; set;}
    //other properties pertinent to DerivedClass2
}

DerivedClass1は と1 対 1 の関係にありNavigationPropertyClassDerivedClass2とは多対 1 の関係にありNavigationPropertyClassます。

NavigationPropertyClassのインスタンスがデータベースから削除されると、関連する のインスタンスと のインスタンスも削除されるDerivedClass1ように、各派生クラスで識別関係を設定しようとしていますDerivedClass2。これを設定する唯一の方法は TPT 継承を使用することですが、それでも正しく動作させることはできません。Fluent API の構成を投稿したいと思いますが、この時点で非常に多くの順列を試したので、どれを投稿すればよいかわかりません。

私がやろうとしていることをする方法はありますか?その場合、Fluent API 構成はどのように見えますか?

4

1 に答える 1