无法在NHibernate中映射表。 GenericADOException

时间:2016-08-14 09:43:02

标签: c# sql-server nhibernate

我是NHibernate映射表的新手,我有一个奇怪的问题。我得到了一个名为GenericADOException的异常。我说它无法加载实体并给我这个查询

[SQL: SELECT user0_.id_user as id1_2_0_, user0_.username as username2_0_, user0_.password as password2_0_, user0_.name as name2_0_, user0_.surname as surname2_0_ 
      FROM dbo.User user0_ 
      WHERE user0_.id_user=?]

但似乎没问题,表名完全相同,所有列都正确。如果我尝试在管理工作室中执行查询,则会抛出

  

关键字'用户'附近的语法不正确。

我无法弄清楚这一点。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

用户是SqlServer中保留的。您需要将NHibernate配置为AutoQuote表和列。

这是需要设置的属性

<property name="hbm2ddl.keywords">auto-quote</property>

这也可以使用Mapping By Code:

来实现
        Configure.DataBaseIntegration(db =>
                                      {
                                          db.Dialect<MsSql2008Dialect>();
                                          db.Driver<SqlClientDriver>();
                                          db.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;
                                          db.IsolationLevel = IsolationLevel.ReadCommitted;
                                          db.ConnectionString = _connectionString;
                                          db.BatchSize = 20;
                                          db.Timeout = 10;
                                          db.HqlToSqlSubstitutions = "true 1, false 0, yes 'Y', no 'N'";
                                      });