0

次の表があります。

Customers:
  ID int PK
  FirstName varchar(50)
  LastName  varchar(50)

私のマッピングファイル: Customer.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                          assembly="Viper.DataAccess"
                          namespace="DataAccess">
    <class name="Customer" entity-name="Customers" dynamic-update="true" >
        <id name="ID">
            <generator class="native" />
        </id>
        <property name="FirstName" />
        <property name="LastName" />
    </class>
</hibernate-mapping>

コード スニピット:

using (ISession session = sessionFactory.OpenSession())
{
    var query = from customer in session.QueryOver<Customer>()
                select customer;

    var c = query.Take(1).SingleOrDefault<Customer>();
}

「プロパティを解決できませんでした: of: Customers」というエラーが表示されます

これが私にこのエラーを与えている理由は何ですか?

編集:

クエリを次のように変更しました。

var query = from customer in session.QueryOver<Customer>()
            where customer.ID >= 0
            select customer;

そしてそれはうまくいきます。

NHibernate を機能させるために無意味な where 句を使用する必要はないと教えてください!??

4

1 に答える 1

1

そこに QueryOver と Linq を混在させています。そして、それは完全に間違ったアプローチです。したがって、使用法に追加using NHibernate.Linq;する必要があります

session.Query<Customer>()そして、代わりに使用してクエリを書き直しますsession.QueryOver<Customer>()

using (ISession session = sessionFactory.OpenSession())
{
    var query = from customer in session.Query<Customer>()
                select customer;

    var c = query.Take(1).SingleOrDefault<Customer>();
}
于 2012-07-20T16:57:54.027 に答える