流畅的NHibernate引用具有空白值的FK

时间:2012-07-26 21:56:55

标签: nhibernate fluent-nhibernate nhibernate-mapping fluent-nhibernate-mapping

我正在尝试映射无法更改的旧系统(Jet db)中的两个表。子表具有FK到父表中的字符串类型列。父表中的FK列是必需的,但通常是空格,即''。我知道这没有意义,但这是我必须处理的。我的映射是;

        References(x => x.ParentObject)
              .Formula("NOT ParentFKColumn = ' '")
              .Column("ChildFKColumn")
              .LazyLoad()
              .Nullable();  

此映射导致以下异常“非法访问加载集合:输入字符串''的格式不正确”。这个错误似乎很明显 - 我只是不确定如何妥善处理它。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

我假设父表中的字符串类型列不是主键,因此您需要将其映射为property并使用property-ref

 References(x => x.ParentObject)
          .PropertyRef("stringProperty")
          .Column("ChildFKColumn")
          .Not.LazyLoad()      // to prevent creating invalid Proxies, but property-ref should already do this
          .NotFound.Ignore(); // threat all values in the foreign key which 

.NotFound.Ignore();告诉NH威胁外键中所有未指向有效记录的值为null。