我有一个这样的模型类,
Class Student
{
private virtual int StudentId; --> id column
private virtual int StudentName;
}
我有两个存储库说 LabRepository & LibraryRepository ,两者都有一个学生表。
问题: 当我尝试从LabRepository检索Student对象并使用相同的模型插入LibraryRepository时,它失败,因为当从LabRepository中退出时,StudentId值为1,并且当它将Id列视为Id列时,NHibernate将执行Update查询而不是Insert查询1.更新查询失败,因为库
中没有ID为1的学生记录我刚刚在这里给出了一个示例,但是我的实际模型类甚至很复杂,其中包含许多id列。我有什么方法可以从一个存储库中获取模型对象并将其插入其他存储库而不用担心在id列上?
答案 0 :(得分:2)
当使用明确声明的EntityName而不是类名
将Student映射两次时,可以完成此操作将neneration更改为已分配并映射参考
public LibraryStudentMap()
{
EntityName("LibraryStudent");
Table("LibraryStudents");
Id(x => x.StudentId).GeneratedBy.Assigned();
}
public LabStudentMap()
{
EntityName("LabStudent");
Table("LabStudents");
Id(x => x.StudentId).GeneratedBy.Assigned();
}
public LibraryMap()
{
References(x => x.Student).EntityName("LibraryStudent");
}
public LabMap()
{
References(x => x.Student).EntityName("LabStudent");
}
然后应该可以
lab.Student = library.Student;
session.SaveOrUpdate(lab);