4

我想要一个可以为空的外键:一个孩子有零个或一个父母。

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。

4

0 回答 0