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>();
}

我收到“无法解析属性:来自:客户”的错误

任何想法为什么这会给我这个错误?

编辑:

我将查询修改为:

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 回答