我有三個實體:用戶,角色和權限。 有兩個控制器:UserController和RolePermissionController。所有控制器都由Nhibernate Session包裝。如何配置Nhibernate不在當前會話中保存對象
當我創建填充角色權限時,用戶不存在。所以我將新的Permission對象存儲在ASP.MVC會話中。當我在UserController中創建用戶時,我想用權限保存新角色。
但是當我用存在的Permission填充新角色(我通過Nhibernate從數據庫中獲得),然後去創建用戶控制器新對象角色,而無需調用Session.SaveOrUpdate或任何其他方法。
我試圖用集中退出後,填補我的新角色與權限同時存在:
Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<ISession>().Evict(newRole);
但它並沒有幫助。 所以我想對Nhibernate說 - 不要在這個事務上保存實體(RolePermissionController) - 並保存連接到UserController中的User對象實體。
我猜你在映射中設置了從權限到角色級聯。 – Vadim 2011-05-11 14:12:52
我不這麼認爲。 Nhibernate會話中的問題,而不是級聯中的問題。 – 2011-05-13 17:42:51
你確定你正在調用Evict()的會話對象與RolePermissionController中使用的是相同的嗎?我會使用.GetHashCode()來確定它是同一個對象。 – 2011-05-20 15:21:05