1

我试图映射旧式系统(Jet数据库)中的两个表,无法更改。子表具有父表中的字符串类型列的FK。父表中的FK列是必需的,但通常是空格,即''。我知道这是没有道理的,但这是我必须处理的。我有的映射是;流利NHibernate的参考FK与空白值

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

这种映射导致以下异常“非法获取装填回收:输入字符串‘’是不正确的格式”。这个错误似乎很明显 - 我只是不确定如何处理它流利。

谢谢你的时间。

回答

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至威胁不指向为空有效记录外键的所有值。

相关问题