繁体   English   中英

EF 4.2中的级联删除问题(代码优先)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM