2016-07-12 9 views
2

I(表2のentityidは、表1に外部キーである)次の2つの表があります。- コードファーストアプローチは、参照テーブル間の削除の操作を行う必要があり

  • 表1 {実体識別子、ユーザ名}
  • 表2 {ID、実体識別子、FIRSTNAME、LASTNAME ....}

私はEF 6を用いて、表2に削除操作を実行すると、私がある場合TABLE1のエントリも削除取得しますそれ以上の参照は表2にはない。このコードを使用することにより

は:

modelBuilder.Entity<SigODEntity>() 
      .HasOptional(a => a.SigODs) 
      .WithOptionalDependent() 
      .WillCascadeOnDelete(true); 

私は表2に子エントリを削除しますTABLE1に削除を実行することができています。

しかし、私はそれも逆の方法で起こってほしいです。 Entity Frameworkで直接行う方法はありますか?

+0

番号を保存します。 EFは、同じタイプの他のエンティティでのFK値の存在をチェックする必要があります。また、親が他の参照を持つ可能性があるため、エラーの可能性が高くなります。 –

答えて

0

削除が必要な場合は、直接実行する方法はありません。あなたはalredyの関係をTable1 → Table2から言いますから。

Table2のすべてのエントリの状態を「削除済み(条件付きである可能性があります)」と表記するループ(foreach)を使用する必要があります。また、Table2内のエントリの状態を確認する必要があります(Table2削除の条件を使用している場合は、削除されないデータがあります)。表2のすべてのエントリの状態がDeletedをしている場合、それは、単一の子レコード高価な操作の削除になるだろうDeletedとしてもEntryState表1のデータを変更し、

db.SaveChanges()

+0

ありがとう!親キーの削除を行うには今のところ子要素が存在しない場合は親を削除するだけです。 –

関連する問題