H想在我的应用程序中使用继承,但是当我运行时,我的hbm映射文件有错误。我的密码在这里
public class StudentDao
{
public virtual int Id { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual StudentDegreeType Degree { get; set; }
public virtual string Field { get; set; }
public virtual IEnumerable<StudentCourse> StudentCourses { get; set; }我的映射文件是:
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping assembly="Tosan.Sevrice.DataAccess" namespace="Tosan.Sevrice.DataAccess.Dao" xmlns="urn:nhibernate-mapping-2.2">
<class name="StudentDao" table="STUDENTT" lazy="true" >
<id name="Id" column="ID" >
<generator class="increment"> </generator>
</id>
<discriminator column="Degree"/>
<property name="FirstName" column="FIRSTNAME" />
<property name="LastName" column="LASTNAME" />
<!--<property name="Degree" column="DEGREE" />-->
<property name="Field" column="FIELD" />
<subclass name="MasterStudent" discriminator-value="1">
<property name="َArticle" />
</subclass>
<subclass name="BachelorStudent" discriminator-value="2">
</subclass>
<set name="StudentCourses" table="StudentCourse" inverse="true" cascade="all,delete-orphan">
<key column="ID"/>
<one-to-many class="StudentCourse"/>
</set>
</class>
</hibernate-mapping>我在文件映射'set‘中使用了一个关系标记
我的孩子课是:
public class BachelorStudent : StudentDao
{
}
}下一堂课是:
public class MasterStudent : StudentDao
{
public virtual bool Article { get; set; }
}
}在我运行这个程序之后,出现了以下错误:
“命名空间‘urn:nhibernate-映射-2.2’中的元素'class‘具有名称空间’urn:nhibernate-映射-2.2‘中的无效子元素'set’。可能需要的元素列表:‘子类、加载程序、sql-插入、sql-更新、sql-删除、筛选器、结果集、查询、sql- query’中的名称空间‘urn:nhibernate-映射-2.2’。”
我该怎么办??
发布于 2019-07-23 05:33:36
需要在子类元素之前定义set元素。即:
<set name="StudentCourses" table="StudentCourse" inverse="true" cascade="all,delete-orphan">
<key column="ID"/>
<one-to-many class="StudentCourse"/>
</set>
<subclass name="MasterStudent" discriminator-value="1">
<property name="َArticle" />
</subclass>
<subclass name="BachelorStudent" discriminator-value="2">
</subclass>https://stackoverflow.com/questions/51339987
复制相似问题