SQL Server 与 Entity Framework 级联删除

SQL Server 级联设置我就不多说了,网上很多教程.

我想提的是 cycles or multiple cascade paths 的问题.

简单的说如果你的级联设置不是一个树型,而是一个带有循环的图,那么这个error就会出现了。

refer http://*.com/questions/851625/foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths
refer https://www.zhihu.com/question/25379813 (级联因该是树形结构的)

所以在使用Entity Code First 时,建议大家把级联关闭

builder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
builder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

自己去SQL里头设置,而遇到 cycles 的话,最好的处理方式应该是使用触发器,拦截delete,先删除级联在删除主key

当然还有一个方式是通过 EF 加载所有级联出来,然后删除. 这样可以不需要在sql做任何设置,只是性能有点伤, 不推荐使用.

上一篇:#0 scrapy爬虫学习中遇到的坑记录


下一篇:android技术牛人的博客[转]