我一直在撞墙砖近两天,所以任何帮助都会很棒。
我得到的情景基本上就是这个。
我有一个名为Campaign
的对象,我在Web客户端从头开始创建。 Campaign
引用了另一个对象Portal
。 Portal
已通过NHibernate从数据库中提取。
当我来呼吁CreateCampaign(Campaign cmp)
NH barfs说Portal
的引用是暂时的,必须先保存。如果我从头开始创建一切,那么它可以正常工作。
简而言之,我有一个新的Campaign
实例,它引用了Portal
的分离实例。级联设置为“save-update,merge”。
我是否需要在调用session.Save之前将所有分离的实例重新加载到会话中,或者是我不知道的其他内容。
很抱歉,如果这看起来有点模糊,并且缺少任何代码,那么NDAs会阻止我发布和代码。
提前致谢。
答案 0 :(得分:1)
您可以使用ISession.Lock
将您的瞬态对象附加到用于保留Campaign的同一会话中:
session.Lock(myPortal, LockMode.None);
myCampaign.Portal = myPortal;
session.Save(myCampaign);