首页 新闻 搜索 专区 学院

EF报错:“可能会导致循环或多重级联路径”,如何解决

0
悬赏园豆:30 [已解决问题] 解决于 2014-04-30 15:14

系统中有两个表,部门表和用户表,一对多的关系,已建立好,现在部门里有个部门负责人,这时如果在部门里添加一个对用户的引用 public virtual SysUser SysUser { get; set; },更新EF就会报错,可能会导致循环或多重级联路径,应该如何修改呢?谢谢

happydaily的主页 happydaily | 小虾三级 | 园豆:674
提问于:2014-04-25 10:07
< >
分享
最佳答案
0

赞同1楼。复杂性确实高,还需要转变思路,按照DDD的思想去设计实体;

你的问题应该是出在导航属性上,可以用FluentAPI删除外键。

收获园豆:15
幻天芒 | 高人七级 |园豆:36594 | 2014-04-25 13:07

兄弟,按DDD我这个实体如何修改呢?

happydaily | 园豆:674 (小虾三级) | 2014-04-25 14:42

@happydaily: 从你的导航属性上看,是符合领域实体的。这个就和一个的数据表实体不太一样。

幻天芒 | 园豆:36594 (高人七级) | 2014-04-26 00:04
其他回答(3)
-3

1.EF坑多,实在太多

这一点没有人会否定.当然你可以说你很牛,但事实不会因为你牛就可以说不存在.从博客园中的博问中大家关于EF的提问量就问题的怪异程度就可以看出来.

2.性能欠佳

此刻有人说你掉进了坑里.

第一、掉进坑里了也是设计的复杂性带来的;

第二、要证明实际性能差,最直接的方法:测试.---让数据告诉你,你自己去写、写到你觉得所谓的公平满意为止.

连接地址:http://www.cnblogs.com/humble/p/3472764.html(大家可以用自己最喜欢、觉得最好的版本来测试)

3.原理上和数据库的本质查询隔得太远

对数据库的查询,本质上是sql在起作用.而EF的出发点是用自身的机制维护实体对象的关系及产生sql.

原理上虽然很清楚,但关系的维护带来了诸多开销成本.

事实告诉我们复杂的关系产生的sql性能时常极低.(不要说你们没有看见过很垃圾的sql产生)

4.除了sqlserver支持良好外,其他数据库支持不是很好

收获园豆:5
【秦时明月】 | 园豆:803 (小虾三级) | 2014-04-25 10:11
0

这是重复引用的结果,导航属性导致的

收获园豆:5
吴瑞祥 | 园豆:28830 (高人七级) | 2014-04-25 10:23
0

这是由于你的A实体中有对B的关联引用,而在B实体中又有对A的引用,这样在进行EF更新时,由于你建立了表关联,所以,会关联更新,这时,就出现了循环更新的问题.

解决:去掉B实体对A实体的引用

收获园豆:5
张占岭 | 园豆:464 (菜鸟二级) | 2014-04-25 16:54

你说的太对了,这其实是表设计的不对导致EF无法自动生成表,不是EF的错,相反他帮助我们识别了设计的问题。

支持(0) 反对(0) hambert | 园豆:108 (初学一级) | 2014-08-12 09:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册