【发布时间】:2011-05-11 09:46:55
【问题描述】:
我有三个实体:用户、角色和权限。 有两个控制器:UserController 和 RolePermissionController。由 Nhibernate Session 包装的所有控制器。
当我创建填充角色权限时,用户不存在。所以我将新的 Permission 对象存储在 ASP.MVC 会话中。当我将在 UserController 中创建用户时,我想保存具有权限的新角色。
但是当我用存在权限填充新角色(然后我通过 Nhibernate 从 DB 获得)并转到创建的用户控制器新对象角色时,没有调用 Session.SaveOrUpdate 或任何其他方法。
在使用现有权限填充我的新角色后,我尝试使用 Evict:
Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<ISession>().Evict(newRole);
但这并没有帮助。 所以我想对 Nhibernate 说 - 不要在此事务中保存实体 (RolePermissionController) - 并保存为连接到 UserController 中的用户对象实体。
【问题讨论】:
-
我猜你在映射中设置了从权限到角色的级联。
-
我不这么认为。 Nhibernate 会话中的问题,而不是级联中的问题。
-
您确定您调用 Evict() 的会话对象与 RolePermissionController 中使用的会话对象相同吗?我会使用 .GetHashCode() 来确保它是同一个对象。
标签: asp.net-mvc nhibernate asp.net-mvc-3 c#-4.0