私は1対nの関係を持つ2つのテーブルを持っています。 MyOtherはMyPrimaryを持っている必要がありますし、独自に存在することはできません - primary_id
私は.WithRequired()
に関係を設定する理由でもあります、非NULL可能列であることを私はCascadeOnDeleteを持っていますが、外来キーIDはNULL可能でなければなりません
modelBuilder.Entity<MyPrimary>()
.HasMany(x => x.MyOthers)
.WithRequired()
.HasForeignKey(x => x.primary_id)
.WillCascadeOnDelete();
注:私は、次のEFコードファーストの関係定義を使用しました。
今、私は次のコードを持っている:
myPrimary.MyOthers.Clear();
ctx.SaveChanges();
をそして、私は次の例外受け取る:
のSystem.InvalidOperationException:操作は失敗しました:一つ以上のための関係は変更できませんでしたが外部キーのプロパティはnull値ではありません。リレーションシップが変更されると、関連する外部キー・プロパティーはNULL値に設定されます。外部キーがNULL値をサポートしていない場合は、新しい関係を定義する必要があります。また、外部キー・プロパティーに別の非NULL値を割り当てる必要があります。
なぜですか? myPrimary.MyOthers
のすべてのMyOther
インスタンスがカスケード削除されるべきではないため、nullを許可しないFKは問題ではありませんか?
「これらのMyOtherレコードを別のMyPrimaryレコードに追加することをお勧めします。 - ありがとう、それは私が欠けていた点です。今はすべてがクリアです! –