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 に答える