一对多的关系在NHibernate中不起作用

时间:2011-05-27 11:58:51

标签: c# nhibernate fluent-nhibernate

我正在使用FluentHibernate和Automapping。我的课程是

public class Student
{
  public Student()
  {
    Books = new List<Book>(); 
  }
  public virtual int Id{get;private set;}
  public virtual string Name{get;set;}
  public virtual IList<Book> Books { get; private set; }
}

public class Book
{
  public  Book (){} 
  public virtual int Id{get;private set;}
  public virtual string Name{get;set;}
}

Now, I create book objects and to a student object, and call save.
Book b = new Book();
b.Name = "test"
Book b1 = new Book();
b2.Name = "test1" 

Student student = new Student();
student.Books.Add(b);
student.Books.Add(b1);
session.saveorupdate(student);

只保存学生而不保存书籍。我做错了什么?

2 个答案:

答案 0 :(得分:1)

您需要将Cascade.SaveUpdate()添加到自动化文件中。它应该看起来像:

HasMany(x => x.Books).Cascade.All();

答案 1 :(得分:0)

我认为这是多对多关系而不是一对多(将更多学生分配到一个独特的书籍项目,反之亦然)。 因此,您还需要将public virtual IList<Student> Students { get; set; }添加到Book类。 在添加每本书后,还要调用save方法,以便自动从数据库填充其ID。