【发布时间】:2011-06-20 18:14:22
【问题描述】:
我已经成功使用 NHibernate 有一段时间了 已经能够通过我的应用程序解决很多陷阱 用它开发并在生产中运行。最近的障碍 不过,真的让我摸不着头脑。
最近我不得不用一些新的类来扩展类库 嵌套在一些已经存在的类中。我刚刚复制 我已经成功的聚合映射相同的模型 使用,但这次它不起作用。
现在当我在父映射文件中使用以下内容时:
<bag name="SeaInfoItems" table="EDIImport_SeaInfo" lazy="false" cascade="save-update">
<key column="EDI_FK_OWNERID"/>
<one-to-many class="FargoGate.AppLib.EdiImportSeaInfo, FargoGate.AppLib"/>
</bag>
我可以选择在子类中使用:
<property name="EDI_FK_OWNERID" column="EDI_FK_OWNERID" />
...这给了我臭名昭著的“无效索引 n SqlParameterCollection with Count=n" 错误。
或者我尝试使用谷歌搜索后找到的这个解决方案:
<property name="EDI_FK_OWNERID" column="EDI_FK_OWNERID" insert="false" update="false" />
...这给了我一个“无法将值 NULL 插入列 'EDI_FK_OWNERID'...列不允许空值。”错误。
所以基本上我必须在害虫和霍乱之间做出选择。
我没有得到的是它完美地适用于已经存在的 聚合类,我真的无法发现差异。唯一的 问题是这个外键(EDI_FK_OWNERID)可以引用两个 不同的父表。糟糕的数据库设计,我知道,但我没有 设计它,我的任务是更好或更坏地发展它。我无法更改数据库设计。
另一个区别是我从已经存在的子类(映射以及类成员)中完全删除了外键引用。我当然想效仿,但无济于事。
我还发现其中一个新类(很小)也可以正常工作。但我也看不出这里有什么区别。我难住了!
有人知道吗?
【问题讨论】:
-
实际上无效的索引 n ... 异常会直接将您带到stackoverflow.com/questions/2298026/…
标签: nhibernate mapping foreign-key-relationship