【发布时间】:2018-12-22 17:05:42
【问题描述】:
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-mapping-2.2' 中的元素 'class' 在命名空间 'urn:nhibernate-mapping-2.2' 中具有无效的子元素 'set'。预期的可能元素列表:'subclass, loader,命名空间 'urn:nhibernate-mapping-2.2' 中的 sql-insert、sql-update、sql-delete、filter、resultset、query、sql-query'。"
我该怎么办??
【问题讨论】:
-
这里没有人??我真的需要帮助。请帮帮我。
-
StudentCourse在Tosan.Sevrice.DataAccess.Daonamespace中吗?否则,它至少需要一个完全限定的名称。StudentDegreeType是 NHibernate 可以映射的吗?否则它需要一张自己的地图 -
实际上这是一个奇怪的错误,它表示 XML 无效,但 Nhib 文档提供了相同的元素结构...
标签: c# .net nhibernate mapping