0

当我尝试将我的饮料对象保存在我的 MVC 应用程序中时,我遇到了 NHibernate 和映射文件的问题。我的映射文件是嵌入式资源,我的 hibernate.cfg.xml 始终是副本。

这是我的class.cs:

namespace FrancosPoS.DBMapping {

    public class drink {
        public drink() { }
        public virtual int id { get; set; }
        public virtual string type { get; set; }
        public virtual string price { get; set; }
    }
}

我的 XML 映射:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping assembly="FrancosPoS.DBMapping" namespace="FrancosPoS.DBMapping" xmlns="urn:nhibernate-mapping-2.2">
    <class name="drink" table="drink" lazy="true" >
        <id name="id">
            <generator class="identity" />
            <column name="id" sql-type="int(11)" not-null="true" />
        </id>
        <property name="type">
            <column name="type" sql-type="varchar(25)" not-null="true" />
        </property>
        <property name="price">
            <column name="price" sql-type="varchar(8)" not-null="true" />
        </property>
    </class>
</hibernate-mapping>

顺便说一句,如果我不尝试将其保存在数据库中,则连接可以正常打开和关闭。

这是我的解决方案资源管理器:

解决方案资源管理器图像

这是让我发疯的错误:

"Error: NHibernate.MappingException: FrancosPoS.DBMapping.drink.hbm.xml(6,8): XML validation error: The element 'id' in namespace 'urn:nhibernate-mapping-2.2' has invalid child element 'column' in namespace 'urn:nhibernate-mapping-2.2'. ---> System.Xml.Schema.XmlSchemaValidationException: The element 'id' in namespace 'urn:nhibernate-mapping-2.2' has invalid child element 'column' in namespace 'urn:nhibernate-mapping-2.2'.\r\n   --- End of inner exception stack trace ---
4

1 回答 1

2

问题出在节点 id 中,它没有子节点,删除该节点,它会是这样的:

<id name="id">
        <generator class="identity" />
</id>

列的名称在 id 节点中指定,并且您不必告诉列具有“非空”约束,因为始终需要 id 列

此外,在您的 xml 映射的这一行中:

<hibernate-mapping assembly="FrancosPoS.DBMapping" namespace="FrancosPoS.DBMapping" xmlns="urn:nhibernate-mapping-2.2">

“程序集”属性似乎是错误的,它应该是您的程序集的名称(我几乎可以肯定是“FrancosPos”)。

于 2012-04-24T13:29:05.263 回答