我正在尝试映射无法更改的旧系统(Jet db)中的两个表。子表具有FK到父表中的字符串类型列。父表中的FK列是必需的,但通常是空格,即''。我知道这没有意义,但这是我必须处理的。我的映射是;
References(x => x.ParentObject)
.Formula("NOT ParentFKColumn = ' '")
.Column("ChildFKColumn")
.LazyLoad()
.Nullable();
此映射导致以下异常“非法访问加载集合:输入字符串''的格式不正确”。这个错误似乎很明显 - 我只是不确定如何妥善处理它。
感谢您的时间。
答案 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。