我在旧数据库中遇到以下情况 [示例]
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 列)
当我尝试映射到 m 关系时,情况是一样的。
如果我映射 id 而不是对象(参考)并在插入之前保存孩子,我可以保存,但我必须重写模型并进行许多手动调整。