实现Nhibernate一对多映射

时间:2010-09-12 10:05:15

标签: c# nhibernate fluent-nhibernate nhibernate-mapping

我有一个班级学校和另一个班级教师。现在每所学校都可以包含m名教师,而一名教师可能是不止一所学校的一部分。但是在教师课堂上,我不想要一个告诉我教师是哪个学校的财产。

因此,

public class School
{
public virtual int Id {get;set;}
public virtual string Name {get;set;}
public virtual IList<Teacher> Teachers {get;set;}
    public School()
    {
    Teachers=new List();
    }
}

相同的映射是

public class SchoolMap:ClassMap<School>
{
    public SchoolMap()
    {
    Id(x=>x.Id);
    Map(x=>x.Name);
    HasMany(x=>x.Teachers);
    }
}

和教师定义为

public class Teacher
{
public virtual int Id {get;set;}
public virtual int Name {get;set;}
}

并定义了预期的简单映射。

现在我想加入这些表格,以便在创建一个School对象然后将教师添加到它并保存它时,我希望它存储在一个映射表中,其列应该是以下SchoolId,TeacherId。

现在我如何在我的映射中使用这个表,这样当我保存School对象时,我的老师也存储在数据库中,在检索School对象时我也检索了教师。

任何答案都将不胜感激。

1 个答案:

答案 0 :(得分:0)

尝试 this

HasMany(x => x.Teachers).Inverse().Cascade.All();