一对多关系不能在NHibernate中工作

问题描述:

我正在使用FluentHibernate和Automapping。我的课程是一对多关系不能在NHibernate中工作

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); 

只有学生不是书本。我究竟做错了什么?

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

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

是的,你是对的。这就是我最终所做的。 – ruskin 2011-05-28 07:24:39

+0

我加了这个,没有更新运行。它只插入没有参考的孩子,并且从不更新。 – BradLaney 2012-10-31 07:24:23

+0

请创建一个新问题,在那里帮助你会更容易。 – Lester 2012-10-31 13:38:37

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