无法在NHibernate中执行查询

无法在NHibernate中执行查询,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,我尝试使用本教程: 这是我的配置NHibernate文件: <?xml version="1.0"?> <configuration> <configSections> <section name="hibernate-configuration" requirePermission="false" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/> <

我尝试使用本教程:

这是我的配置NHibernate文件:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="hibernate-configuration" requirePermission="false" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
  </configSections>
  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <reflection-optimizer use="false"/>
    <session-factory>
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
      <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
      <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
      <property name="connection.connection_string">Data Source=.\SQLEXPRESS; Initial Catalog=dbTest; Trusted_Connection=true;</property>
      <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
      <property name="show_sql">true</property>
      <mapping resource="TestNHibernate.user.hbm.xml" assembly="TestNHibernate"/>
    </session-factory>
  </hibernate-configuration></configuration>
以下是查询代码:

 Configuration config = new Configuration();
                config.AddAssembly(typeof(user).Assembly);
                ISessionFactory sessionFactory = config.BuildSessionFactory();

                using (var session = sessionFactory.OpenSession())
                {                   
                    IQuery query = session.CreateQuery("from user as u");
                    IList<user> lst = query.List<user>();
                    foreach (var user in lst)
                    {
                        Console.WriteLine(user.Name);
                    }
                }
Configuration config=new Configuration();
config.AddAssembly(typeof(user.Assembly));
ISessionFactory sessionFactory=config.BuildSessionFactory();
使用(var session=sessionFactory.OpenSession())
{                   
IQuery query=session.CreateQuery(“从用户作为u”);
IList lst=query.List();
foreach(lst中的var用户)
{
Console.WriteLine(用户名);
}
}
总是显示错误:

无法执行查询[select] user0\u.Id为Id0\u,user0\u.Name为 Name0_uu来自用户user0_uu][SQL:选择 user0\u.Id为Id0\u,user0\u.Name为 名称0_u来自用户user0_uu]

我试图插入,更新,但它也显示无法插入,更新。我的问题在哪里

有我的映射文件吗?
请给我建议!谢谢

确保映射中的表名和列名与DB架构中定义的表名和列名完全匹配。区分大小写可能也很重要,具体取决于您的SQL server配置。

如果使用此代码,NHibernate将生成数据库架构和数据库脚本,以防止区分大小写或其他错误

 var conf = new NHibernate.Cfg.Configuration();
        conf.Configure();


        var export = new SchemaExport(conf);
        export.SetOutputFile(@"DatabaseScript.sql");
        export.Drop(true, true);
        export.Create(true, true);
我还认为“用户”可以是一个保留字!尝试:

IQuery query = session.CreateQuery("from [user] as u");
两件事:

(1) 在映射文件中,应该将用户表括在方括号中,例如[User]。User是SQL Server(和大多数其他SQL系统)中的保留关键字


(2) 每当您在NHibernate中遇到异常时,进入调试模式并查看内部异常。这些通常提供问题所在的提示

 var conf = new NHibernate.Cfg.Configuration();
        conf.Configure();


        var export = new SchemaExport(conf);
        export.SetOutputFile(@"DatabaseScript.sql");
        export.Drop(true, true);
        export.Create(true, true);
IQuery query = session.CreateQuery("from [user] as u");
<class name="user" table="[user]">