[英]Cascade delete issue in EF 4.2 (code first)
我有一个称为用户的实体。 用户应在多语言环境中使用,因此用户看起来像
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;}
}
我也有一个用户规则
modelBuilder.Entity<User>()
.HasMany(q => q.Name)
.WithOptional()
.WillCascadeOnDelete();
modelBuilder.Entity<User>()
.HasMany(q => q.Info)
.WithOptional()
.WillCascadeOnDelete();
使用此规则,EF无法创建模型Esception消息为“在表'TextEntry'上引入FOREIGN KEY约束'User_Info'可能会导致循环或多个级联路径。请指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。 \\ r \\ n无法创建约束。请参见先前的错误。”
如果没有此规则,由于引用限制,尝试删除用户时会出现异常。
如何为User.Info数据创建其他实体来解决此问题?
此错误是来自SQL Server,而不是来自Entity Framework。 实体框架正在为两次出现的TextEntry创建一个表。
可能最简单的解决方案是从TextEntry派生另外两个类,使TextEntry抽象并将这两个类映射到不同的表( TPC )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.