2016-08-14 67 views
0

我是新的与NHibernate映射表和Ii有一个奇怪的问题。我收到一个名为GenericADOException的异常。我说它不能加载实体,并给我这个查询无法在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=?] 

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

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

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

回答

0

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

这是一个需要设置

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

这也可以使用映射实现通过代码属性:

 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'"; 
             });