Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么NHibernate会给我这个错误;无法解析属性:of:Customers“;_C#_Nhibernate - Fatal编程技术网

C# 为什么NHibernate会给我这个错误;无法解析属性:of:Customers“;

C# 为什么NHibernate会给我这个错误;无法解析属性:of:Customers“;,c#,nhibernate,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.Da

我有下表:

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>();
}
使用(ISession session=sessionFactory.OpenSession())
{
var query=来自会话中的客户。QueryOver()
选择客户;
var c=query.Take(1.SingleOrDefault();
}
我收到一个错误“无法解析属性:of:客户”

你知道为什么我会犯这个错误吗

编辑:

我将我的查询修改为:

var query = from customer in session.QueryOver<Customer>()
            where customer.ID >= 0
            select customer;
var query=来自会话中的客户。QueryOver()
其中customer.ID>=0
选择客户;
而且效果很好


请告诉我,为了让NHibernate正常工作,我不需要有无意义的where子句

你在那里混合了QueryOver和Linq。这是完全错误的做法。因此,您应该使用NHibernate.Linq添加
到您的使用

并使用
session.query()
而不是
session.QueryOver()

使用(ISession session=sessionFactory.OpenSession())
{
var query=来自会话中的客户。query()
选择客户;
var c=query.Take(1.SingleOrDefault();
}

应该有
session.Query()
根据我的智能感知,我认为没有。。。我是不是错过了一个推荐人?你把QueryOver和Linq混在一起了。这是完全错误的做法。因此,您应该使用NHibernate.Linq添加
并使用session.Query()你能把它作为一个答案,这样我就可以投票给你了吗?那很有效!非常感谢。
using (ISession session = sessionFactory.OpenSession())
{
    var query = from customer in session.Query<Customer>()
                select customer;

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