一对多关系在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);
仅保存学生,不保存书本。我究竟做错了什么?     

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...