Nhibernate - 在断开连接的会话中引用临时对象

时间:2010-06-09 13:36:36

标签: nhibernate nhibernate-mapping

我一直在撞墙砖近两天,所以任何帮助都会很棒。

我得到的情景基本上就是这个。

我有一个名为Campaign的对象,我在Web客户端从头开始创建。 Campaign引用了另一个对象PortalPortal已通过NHibernate从数据库中提取。

当我来呼吁CreateCampaign(Campaign cmp) NH barfs说Portal的引用是暂时的,必须先保存。如果我从头开始创建一切,那么它可以正常工作。

简而言之,我有一个新的Campaign实例,它引用了Portal的分离实例。级联设置为“save-update,merge”。

我是否需要在调用session.Save之前将所有分离的实例重新加载到会话中,或者是我不知道的其他内容。

很抱歉,如果这看起来有点模糊,并且缺少任何代码,那么NDAs会阻止我发布和代码。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以使用ISession.Lock将您的瞬态对象附加到用于保留Campaign的同一会话中:

session.Lock(myPortal, LockMode.None);
myCampaign.Portal = myPortal;
session.Save(myCampaign);