为什么NHibernate给我错误“无法解析属性:客户”

时间:2012-07-20 16:36:49

标签: c# nhibernate

我有下表:

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>

代码snippit:

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工作,我没有必要在哪些条款中没有意义!??

1 个答案:

答案 0 :(得分: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>();
}