2016-12-13 6 views
1

私のエンティティの一部のリレーションシップでカスケード削除を有効にしたいが、データベースを変更したくない。 Entity Frameworkでこれを行う方法があるのだろうかと思います。EF Code First:データベースを変更せずにDelete Cascadeを実行できますか?

つまり、親が削除されたときにすべての関連レコードを削除するためにEFが自動的にSQL呼び出しを生成すると、それは完璧です。

私は私のSonEntityTypeConfigurationクラスにこれを追加しようとしていた。

public SonEntityTypeConfiguration() 
    { 
     HasRequired(e => e.Parent) 
      .WithMany() 
      .WillCascadeOnDelete(true); 

     //(...) 
    } 

が、私はこのエラーを取得しています:

The model backing the 'AuditoriaUnitOfWork' context has changed since the database was created. Consider using Code First Migrations to update the database

だから、まだデータベースを変更しようとしているようです。

これを達成する方法はありますか?あきらめて、データベースマネージャに変更を依頼してください。

+5

エラーメッセージは自明です! –

答えて

1

WillCascadeOnDeleteは、データベースレベルでのカスケード削除に依存します。したがって、スキーマの変更が必要になります。

カスケード削除がEFレイヤーで実装されていないのは、EFが使用される保証がないためです。データベースにアクセスするにはさまざまな方法がありますが、参照整合性が維持されるようにするのはデータベースの役割です。このために上位層に依存することはできません。

+0

だから、答えはいいえです。ありがとう、ありがとう。 –

0

ここには2つのオプションがあります。最初に実装していない場合はマイグレーションが必要なWillCascadeOnDeleteを使用するか、関連するオブジェクトを自分で削除することができます。

関連する問題