10

MusicStore Nhibernateポートを構築しようとしていますが、次のエラーが発生しました。

クラス'MvcMusicStore.Models.OrderDetail'でプロパティ'OrderInfo'のゲッターが見つかりませんでした

次の内部例外を除いて:

NHibernate.PropertyNotFoundException:クラス'MvcMusicStore.Models.OrderDetail'でプロパティ'OrderInfo'のゲッターが見つかりませんでした

OrderDetailに次のマッピングを使用している場合:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MvcMusicStore" namespace="MvcMusicStore.Models">
  <class name="OrderDetail">
    <id name="Id">
      <generator class="hilo" />
    </id>

    <many-to-one name="OrderInfo" column="OrderInfoId" />
    <property name="Quantity" />
    <property name="UnitPrice" />

    <many-to-one name="Album" column="AlbumId" />
  </class>
</hibernate-mapping>

そしてC#クラスの定義:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

    namespace MvcMusicStore.Models
    {
        public class OrderDetail : Entity
        {
            public virtual OrderInfo Order { get; set; }
            public virtual Album Album { get; set; }
            public virtual int Quantity { get; set; }
            public virtual decimal UnitPrice { get; set; }
        }
    }

OrderInfoクラスのマッピングは次のとおりです。

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="MvcMusicStore" namespace="MvcMusicStore.Models">
  <class name="OrderInfo">
    <id name="Id">
      <generator class="hilo" />
    </id>

    <property name="OrderDate" />
    <property name="Username" />
    <property name="FirstName" />
    <property name="LastName" />
    <property name="Address" />
    <property name="City" />
    <property name="State" />
    <property name="PostalCode" />
    <property name="Country" />
    <property name="Phone" />
    <property name="Email" />
    <property name="Total" />

    <set name="OrderDetails">
      <key column="OrderInfoId" />
      <one-to-many class="OrderDetail" />
    </set>
  </class>
</hibernate-mapping>

そしてそれは次のC#クラス定義を持っています:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcMusicStore.Models
{
    public class OrderInfo : Entity
    {
        public virtual DateTime OrderDate { get; set; }
        public virtual string Username { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string LastName { get; set; }
        public virtual string Address { get; set; }
        public virtual string City { get; set; }
        public virtual string State { get; set; }
        public virtual string PostalCode { get; set; }
        public virtual string Country { get; set; }
        public virtual string Phone { get; set; }
        public virtual string Email { get; set; }
        public virtual string Total { get; set; }

        public virtual ICollection<OrderDetail> OrderDetails { get; set; }
    }
}

Entityクラスは、GuidIDプロパティを追加する抽象クラスです。私は何が間違っているのですか?正直なところ、マッピングに問題はありません。

4

2 に答える 2

7

マッピングファイルでは、次のように言います。

<many-to-one name="OrderInfo" column="OrderInfoId" />

そしてあなたは言わなければなりません:

<many-to-one name="Order" column="OrderInfoId" />
于 2012-08-08T11:54:54.663 に答える
3

プロパティ名はOrder、ではなくOrderInfoです。プロパティの名前をOrderInfo:に変更します。

public virtual OrderInfo OrderInfo {get;set;}

または構成を変更します。

<many-to-one name="Order" column="OrderInfoId" />
于 2012-08-08T11:54:18.800 に答える