我有一个非常简单的NHibernate设置:一个Item对象,它有一个ItemDetail对象的集合。他们之间的一对多关系。
在我的网络应用程序中,我编写的代码类似于:
item.Details.Add(new ItemDetail { Item = item, Text = "blah" });
itemRepos.Save(item);
这一切都运作良好。但是,现在我正在编写一个小型控制台应用程序来执行一些导入,重用我的NHibernate设置和映射,但是当执行相同的代码时,我的保存尝试会导致抛出异常,警告我ItemDetail.Item包含null或瞬态项目。我认为这意味着它抱怨ItemDetail.Item指的是尚未保存的项目(项目绝对不是null),但这听起来很奇怪,因为它正是我正在保存的项目。
我在这里忽略了一些微不足道的事情吗?
答案 0 :(得分:0)
您提供的详细程度并不足以了解正在发生的事情。
如果我冒险猜测,它与级联和项目与细节之间的双向关系有关。您可能在关系的OneToMany端指定了级联规则,但在ManyToOne端没有指定。尝试在那里添加级联规则。
答案 1 :(得分:0)
原来问题是由于日期格式化错误(SQL错误)导致保存项失败但是没有捕获到。然后,当它继续保存ItemDetails时,它抱怨项目没有被保存。
它没有引发关于SQL错误的异常,有点奇怪,不是吗?