我想要一个可以为空的外键:一个孩子有零个或一个父母。
NHibernate 总是抱怨Foreign key reference target does not exist
. 甚至不可能做我想做的事吗?
孩子:
References( x => x.Parent ).Column("PARENT_ID").Cascade.SaveUpdate().Nullable().NotFound.Ignore();
家长:
HasMany(x => x.Structures).KeyColumn("PARENT_ID").Cascade.SaveUpdate().Inverse().KeyNullable().NotFound.Ignore();
为孩子生成的 XML:
<many-to-one cascade="save-update" class="..." name="..." not-found="ignore">
<column name="PARENT_ID" not-null="false">
</many-to-one>
对于父母:
<bag cascade="save-update" inverse="true" name="...">
<key not-null="false">
<column name="PARENT_ID" />
</key>
<one-to-many class="..." not-found="ignore" />
</bag>
日志输出
INSERT INTO CHILD (..., PARENT_ID, ..) VALUES (..., @p1, ...)
Parameters: Name:@p1 Type:BigInt Used Value:False
无论如何,我不知道父 ID 如何成为布尔值,但我想这不是问题,只是值的内部表示?不会引发语法异常。
在 DB 工具中,执行查询并插入数据。
我正在使用 NHibernate 3.3.3.40000、FluentNHibernate 1.3.0.733 和 Firebird 作为数据库和 ADO.NET 提供程序 3.0.2.1。