我有这样的模型:
public class Account
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
public Account Parent { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我添加以下配置:
this.HasOptional(item => item.Parent)
.WithMany()
.HasForeignKey(item => item.ParentId)
.WillCascadeOnDelete(true);
Run Code Online (Sandbox Code Playgroud)
然后我收到以下错误消息:
程序集初始化方法UnitTest.Biz.Accounting.TestInitializer.Init引发异常.System.Data.SqlClient.SqlException:System.Data.SqlClient.SqlException:在表'acct_Account'上引入FOREIGN KEY约束'FK_dbo.acct_Account_dbo.acct_Account_ParentId'可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.无法创建约束.
我已经阅读了EF的文档,但我不明白我的代码在哪里出错...
如果依赖实体上的外键可以为空,则Code First不会在关系上设置级联删除,并且当删除主体时,外键将设置为null http://msdn.microsoft.com/en-us/数据/ jj591620#CascadeDelete