2009-02-19 85 views
0

我有一个非常简单的NHibernate安装程序:一个Item对象,它有一个ItemDetail对象集合。它们之间是一对多的关系。NHibernate一对多

在我的web应用程序,我写类似的代码:

item.Details.Add(new ItemDetail { Item = item, Text = "blah" }); 
itemRepos.Save(item); 

这一切运作良好。然而,现在我正在编写一个小控制台应用程序来执行一些导入操作,重用了我的NHibernate设置和映射,但是当执行相同的代码时,我的保存尝试会导致引发异常,并警告我ItemDetail.Item包含null或瞬态项目。我认为这意味着它抱怨ItemDetail.Item引用尚未保存的项目(该项目绝对不是null),但这听起来很奇怪,因为它正是我正在保存的项目。

我在这里忽略了一些微不足道的东西吗?

+0

你能告诉我们你的映射吗?听起来像你缺少级联或反转设置。 – 2009-02-19 13:10:34

回答

0

原来问题是由于日期格式错误(SQL错误)导致保存项目失败,但未捕获该项目。然后,当它继续保存ItemDetails时,它抱怨项目没有被保存。

它有点奇怪,它没有提出关于SQL错误的异常,不是吗?

0

您提供的详细程度并不足以知道发生了什么。

如果我冒险猜测,它必须处理级联和项目和细节之间的双向关系。您可能在关系的OneToMany一侧指定了级联规则,但在ManyToOne一侧没有。尝试在那里添加级联规则。