我在遗留数据库中有两个表...
tblParentTable (int id, string specialIdentifier, ...)
tblChildTable (int id, string specialIdentifier, ...)
正如您所看到的,添加了一个自动递增的int id,但是使用旧的字符串主键连接子表(事实上,specialIdentifier是tblParentTable的主键,tblChildTable上的主键和外键) )。
所以我创建了域对象和Fluent NHibernate映射,但由于这种奇怪的模式,NHibernate认为它需要首先保存tblChildTable记录,然后才能保存tblParentTable - 这会导致外键约束错误。
我如何提示NHibernate tblParentTable是父母,需要先保存?
以下是映射......
public ParentMap()
{
Table("tblParentTable");
Id(x => x.Id).Column("id");
Map(x => x.SpecialIdentifier);
References(x => x.Child).Column("specialIdentifier");
}
public ChildMap()
{
Table("tblChildTable");
Id(x => x.Id).Column("id");
Map(x => x.SpecialIdentifier);
References(x => x.Child).Column("specialIdentifier");
}
如果您认为我遗漏了重要信息,请随时询问更多信息。
由于
答案 0 :(得分:0)
我不流利;相反,我通过手动创建xml映射文件来创建我的映射。 我相信关联上的“反向”属性允许您指定关联的“所有者”(父级)。由于我不使用流利,我不知道如何在你的映射中指定,所以我不能给你一个例子。
此外,在Xml映射中,我使用'property-ref'属性来指示'specialIdentifier'是关系使用的列。
答案 1 :(得分:0)
如果你想在Fluent NHibernate中进行这种映射,那么这里有一篇很好的文章: