我想要一个可以为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。