【问题标题】:How configure Nhibernate to not save object in current session如何配置 Nhibernate 在当前会话中不保存对象
【发布时间】: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


【解决方案1】:

这并不能直接回答您的问题,但它仍然可能是一个解决方案 - 如何通过 ViewModel 收集所有信息,以便您最终得到一个从 ViewModel 获取信息的控制器操作,创建同时角色和用户(即在同一个请求期间),不需要混乱的会话内容。

也许不是你要找的答案,但我用这种方式做过类似的事情,而且效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-12
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2011-12-08
    • 1970-01-01
    相关资源
    最近更新 更多