4

次のEntity Framework 5コードの最初のクラスがあります

public class Airplane
{
    public int Id { get; set; }

    public int LeftWingId { get; set; }
    public virtual Wing LeftWing { get; set; }

    public int RightWingId { get; set; }
    public virtual Wing RightWing { get; set; }
}

public class Wing
{
    public int Id { get; set; }
}

飛行機には左翼と右翼が 1 つずつあります (両方が必要です)。Wing は 0..1 の飛行機 (左翼または右翼として) または他の「飛行装置」に属している可能性があります。飛行機を削除すると、その翼がカスケード削除されます。

これは、コード ファーストの流暢な API でどのように構成できますか?

EF で 2 つの 0..1 --- 1 関連付けを両方でカスケード削除することは可能ですか?

4

1 に答える 1

1

残念ながら、同じソース テーブルから同じターゲット テーブルを指す 2 つの関連付けを両方でカスケード削除することはできません。

ただし、これは EF の制限によるものではなく、SQL サーバーの制限によるものです。

確認したい別の質問の回答からの引用:

SQL Server はカスケード パスの単純なカウントを行い、循環が実際に存在するかどうかを調べようとするのではなく、最悪の事態を想定して参照アクション (CASCADE) の作成を拒否します。設計を変更できない場合 (または変更すると問題が発生する場合) は、最後の手段としてトリガーを使用することを検討してください。

于 2013-03-03T16:48:39.523 に答える