如何在Fluent NHibernate中定义可以为空的外键?

时间:2013-05-07 10:01:24

标签: fluent-nhibernate foreign-keys fluent-nhibernate-mapping

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

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如何可以是一个布尔值,但我想这不是问题而只是值的内部表示?不会抛出语法异常。

在数据库工具中,执行查询并插入数据。

我正在使用NHibernate 3.3.3.40000,FluentNHibernate 1.3.0.733,Firebird作为数据库和ADO.NET提供程序3.0.2.1。

0 个答案:

没有答案