2012-07-20 19 views
0

我有如下表:爲什麼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工作而在子句中沒有意義!

+0

應該有'session.Query ()'我相信 – hazzik 2012-07-20 16:39:21

+0

不按我的智能感知......上午重寫查詢我錯過了一個參考? – Scottie 2012-07-20 16:40:35

+0

您正在混合QueryOver和Linq那裏。這是完全錯誤的應用程序。所以你應該添加'使用NHibernate.Linq;'並且使用session.Query () – hazzik 2012-07-20 16:48:05

回答

1

您正在混合QueryOver和Linq那裏。這是完全錯誤的應用程序。所以,你應該添加using NHibernate.Linq;您usings

並使用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>(); 
} 
相關問題