问题描述
我正在使用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);
仅保存学生,不保存书本。我究竟做错了什么?
解决方法
您需要在自动映射文件中添加“ 1”。它看起来应该像这样:
HasMany(x => x.Books).Cascade.All();
, 我认为这是多对多的关系,而不是一对多的关系(将更多学生分配给一个独特的书本,反之亦然)。
因此,您还需要在Book类中添加public virtual IList<Student> Students { get; set; }
。
添加每本书后,也可以调用save方法从数据库自动填充其ID。