0

我有一个这样的模型课,

 Class Student
{
    private virtual int StudentId;  --> id column
    private virtual int StudentName;
}

我有两个存储库,分别是LabRepositoryLibraryRepository,它们都有一个学生表。

问题: 当我尝试从 LabRepository 检索 Student 对象并使用相同的模型插入 LibraryRepository 时,它会失败,因为从 LabRepository 检索时 StudentId 值为 1,并且 NHibernate 在看到 Id 时将执行更新查询而不是插入查询列为 1。更新查询失败,因为库中没有 ID 为 1 的学生记录

我刚刚在这里给出了一个示例,但是我的实际模型类甚至很复杂,其中包含许多 id 列。有什么方法可以从一个存储库中获取模型对象并将其插入到另一个存储库中而不用担心 id列?

4

1 回答 1

2

可以在使用除类名之外的明确声明的 EntityName 两次映射 Student 时完成

将 idgeneration 更改为分配并映射参考

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);
于 2013-03-15T07:46:58.413 回答