2010-10-20 57 views
3

我有以下情况:实体框架也救不了关系

role.Permissions.Add(permission); 
objectContext.SaveChanges(); 

当我现在就在关系表Roles_Permissions新添加的权限,作用是不存在看一看。当我处理对象上下文时,它只保存新的关系。我做错了什么,或者对SaveChanges的调用不保存关系集上的更改?

+1

您使用EF4还是EF1.0? – 2010-10-20 19:09:47

+0

我正在使用实体框架4 – Mato 2010-10-20 22:00:17

+0

该代码看起来很好。更有可能的是别的东西导致问题。您是使用POCO或任何自定义对象上下文(或工作单元),还是使用数据库中的标准EF代码? – RPM1984 2010-10-20 22:51:35

回答

0

听起来好像您正在使用交易。

所做的更改在事务范围外不可见,直到事务提交。

事务范围直到对象上下文被处置时才被提交。

+0

我没有使用交易。 EF有可能自动创建交易吗?如果是这样,我能以某种方式获得交易来触发提交吗? – Mato 2010-10-21 12:11:11

+0

检查构造函数或对象上下文的属性。但是你应该尽快关闭你的对象上下文,所以它可能不是问题。 – 2010-10-21 12:38:17

0

只要检查它们是否在同一个objectContext中。

0

可以确保您的许可的实体是已知你的对象上下文通过执行以下代码行:

objectContext.AddObject("Permissions", permission); 
1

检查ObjectStateManager - 调用的SaveChanges之前,对对象状态管理器一看就得到所有具有添加状态的更改 - 它应该只返回那个权限对象的一个​​项目。如果它不在那里,还有其他的错误。调用SaveChanges应该保持您的更改。