0

C# で NHibernate を使用していますが、コンパイル時に次のエラーが表示されます。

 {"Could not find a getter for property 'idOrder' in class 'FrancosPoS.DBMapping.ordPsf'"}

この質問を見つけましたが、それを使用する方法が わかりませんでした: Nhibernate - プロパティのゲッターが見つかりませんでした

これは私のマッピングクラスです:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping assembly="FrancosPoS" namespace="FrancosPoS.DBMapping" xmlns="urn:nhibernate-mapping-2.2">
  <class name="ordPsf" table="ord_psf" lazy="true" >
    <id name="idOrdPastaF">
      <generator class="identity" />
      <!--<column name="idOrdPastaF" sql-type="int(11)" not-null="true" />-->
    </id>
    <many-to-one insert="false" update="false" lazy="false" name="idOrder">
      <column name="idOrder" sql-type="int(11)" not-null="true" />
    </many-to-one>
    <property name="idOrder">
      <column name="idOrder" sql-type="int(11)" not-null="true" />
    </property>
    <many-to-one insert="false" update="false" lazy="false" name="idPastaF">
      <column name="idPastaF" sql-type="int(11)" not-null="true" />
    </many-to-one>
    <property name="idPastaF">
      <column name="idPastaF" sql-type="int(11)" not-null="true" />
    </property>
    .
    .
    .
    <property name="obs">
      <column name="obs" sql-type="varchar(50)" not-null="false" />
    </property>
    <property name="price">
      <column name="price" sql-type="decimal(8,4)" not-null="true" />
    </property>
  </class>
</hibernate-mapping>

そして、これは私のcsクラスです:

namespace FrancosPoS.DBMapping {

    public partial class ordPsf {
        public ordPsf() { }
        public virtual int idOrdPastaF { get; set; }
        public virtual order order { get; set; }
        public virtual pastaFeast pastaFeast { get; set; }
        public virtual salad salad { get; set; }
        public virtual onTheSide onTheSide { get; set; }
        public virtual string obs { get; set; }
        public virtual string price { get; set; }
    }
}

私の推測では、マッピングが間違っていると思います。明らかな理由により、オブジェクトを使用する必要があるため、idOrder を取得/設定したくありません。(また、これを修正した後、他のIDでも同じエラーが発生すると思います)

4

3 に答える 3

0

ここで何をしようとしているのかわかりません。マッピングによると、クラスは次のようになっている必要があります。

public partial class ordPsf {
    public ordPsf() { }
    public virtual int idOrder { get; set; }
    public virtual int idPastaF{ get; set; }
    .....
    public virtual string obs { get; set; }
    public virtual decimal price { get; set; }
}
于 2012-09-17T03:58:25.583 に答える
0

パブリック アクセサーでプロパティを使用したくない場合は、プライベート フィールドにマップできます。

<column ... access="field" .../>
于 2012-09-17T04:07:14.970 に答える
0

問題は < プロパティ > が < 多対一 > 関係と「競合」していることにあることがわかりました。

<property name="idOrder">
  <column name="idOrder" sql-type="int(11)" not-null="true" />
</property>

多対一が注文オブジェクト (および ID) を処理するため、これは必要ありません。

多対一の関係をマッピングする方法を調べて見つけました: http://ajlopez.wordpress.com/2011/05/19/nhibernate-3-part-6-one-to-many-with-many-to -1/

于 2012-09-22T05:04:42.543 に答える