遗留数据库[示例]
中存在以下情况table1
**ID_TABLE1 [PK]
ID_SOURCE** [PK]
table2
**ID_TABLE2 [PK]
ID_SOURCE** [PK]
table3
**ID_TABLE3 [PK]
ID_SOURCE** [PK][FK]
ID_TABLE2 [FK]
ID_TABLE1 [FK]
public partial classTable3Map : ClassMap<TABLE3>
{
public classTable3Map()
{
Table("TABLE3");
LazyLoad();
CompositeId().KeyProperty(x => x.ID_TABLE3 , "ID_TABLE3").KeyProperty(x => x.ID_SOURCE, "ID_SOURCE");
References(x => x.TABLE1).Columns("ID_TABLE1 ", "ID_SOURCE");
References(x => x.TABLE2).Columns("ID_TABLE2 ", "ID_SOURCE");
}
}
当我尝试保存这种类型的对象时,nhibernate会抛出一个
**System.IndexOutOfRangeException**
Message=Index xx non valid for xxxParameterCollection
我会看到它有更多输入然后参数(重复ID_SOURCE列)
当我尝试将n映射到m时,关系是相同的情况。
我可以保存,如果我映射id而不是对象(引用)并在插入之前保存子项,但我必须重写模型并进行许多手动调整。
答案 0 :(得分:0)
不幸的是,无法将列指定为主键和外键see here for similar question的一部分。
我看到的选项:
.Readonly()