我正在处理的项目有一个遗留数据库,其中包含大量用于改变应用程序行为的信息。基本上我坚持的东西,我必须超小心改变。NHibernate,遗留数据库,外键不是
对我的问题。在这个数据库中是一个表,在这个表中是一列。此列包含整数,并且此列中大多数已有数据的值为零。
问题是这个列实际上是另一个实体的外键引用,它在数据库模式中从未被定义为这样。
现在在我的新代码中,我定义了我的Fluent-NHibernate映射,将此列作为参考对待,以便我不必直接在我的代码中处理实体标识。这工作正常,直到我遇到一个实体在这个列中的值为0。
NHibernate认为值为0是一个有效的引用。当我的代码尝试使用该引用的对象时,我得到一个ObjectNotFoundException,因为显然没有对象在我的数据库中的ID为0.
我该如何通过映射或某种约定(我使用Fluent -nhibernate),得到NHibernate处理ID为0是相同的,如果它是NULL?