0
私はUserと呼ばれるエンティティを持っています。ユーザは、ユーザが、私はこれにより、ユーザEF 4.2のカスケード削除の問題
modelBuilder.Entity<User>()
.HasMany(q => q.Name)
.WithOptional()
.WillCascadeOnDelete();
modelBuilder.Entity<User>()
.HasMany(q => q.Info)
.WithOptional()
.WillCascadeOnDelete();
ためのルールはEFが Esceptionメッセージは、「FOREIGN KEY制約を紹介されたモデルを作成することができませんでしたルール持っまた
class User{
virtual ICollection<TextEntry> Name {get; set;}
virtual ICollection<TextEntry> Info {get; set;}
...
}
class TextEntry
{
int id {get; set;}
string Text {get; set;}
string Culture {get;set;}
}
のように見えます 多言語環境で使用する必要があります'TextEntry'テーブルの 'User_Info'は、サイクルまたは複数のカスケードパスを引き起こす可能性があります。
このルールがないと、参照制約のためにユーザーを削除しようとすると例外が発生します。
User.Infoデータの追加エンティティを作成することでこれを解決する方法はありますか?
しかし、多言語にする必要があるフィールドが3つ以上ある場合はどうなりますか?新しい分野のために新しいインスタンスを作成することは素晴らしい考えではないと思います。それはすべて同じ機能を持ちますが、名前は異なるためです。 – Ph0en1x
@ Ph0en1xはいはい。しかし、いくつかのカスタムパーツ(ビュー(1つのテーブルを模倣するのに役立つかもしれない)、トリガー(実際にカスケードに役立つかもしれない)など)を使用してEntity Frameworkの外部にデータベースを作成することなく、 –
私は、この問題がEFルールでいくつかのトリックで解決できることを本当に願っています。 – Ph0en1x