【发布时间】:2021-08-28 19:24:56
【问题描述】:
我想在 Nhibernate 中建立多对多关系,但我现在卡住了,我有 3 个 sql 表,学生类和学生类关系,我用 c# 编写了 2 个类
class Student
{
public virtual int StudentID { get; set; }
public virtual string name { get; set; }
public virtual IList<Class> Classes { get; set; }
public virtual void AddClass(Class Classer) {
Classes.Add(Classer);
}
}
'''
class Class
{
public virtual int ClassID { get; set; }
public virtual string name { get; set; }
public virtual string teacher { get; set; }
public virtual List<Student> students { get; set; }
public virtual void AddStudent(Student stud) {
students.Add(stud);
}
}
我的xml文件是这样的,其他的也是这样
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="NHibernateTutorialPart1"
namespace="NHibernateTutorialPart1">
<class name="Student">
<id name="StudentID" column="StudentID" >
</id>
<property name="name" />
<bag name ="Classes" table="ClassStudentRelation" cascade ="all" inverse ="true" >
<key column="ClassID"></key>
<many-to-many class="Class"> </many-to-many>
</bag>
</class>
</hibernate-mapping>
我主要创建了这些对象
Student sven= new Student {StudentID=7, name = "sven" };
Class Ai = new Class {ClassID=7, name = "AI", teacher = "lauer" };
List<Class> tmp = new List<Class>();
List<Student> save = new List<Student>();
save.Add(sven);
tmp.Add(Ai);
Student sven2= new Student { StudentID = 62, name = "sven2",Classes=tmp };
Class Ai2 = new Class { ClassID = 62, name = "AI2", teacher = "lauer2",students=save };
mySession.Save(sven2);
mySession.Save(Ai2);
mySession.Transaction.Commit();
如果我在没有 sven 和 ai 而没有列表的情况下提交,我可以在正确的 sql 表中提交信息,但我想提交 ai2 和 sven2 以及另一个列表,我将信息放入 3 个表中但是这确实有效,有人知道如何解决它。 错误与
不匹配NHibernate.Collection.Generic.PersistentGenericBag and NHibernate.Collection.Generic.PersistentGenericList
【问题讨论】:
标签: c# sql orm nhibernate