我是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=?]
但似乎没问题,表名完全相同,所有列都正确。如果我尝试在管理工作室中执行查询,则会抛出
关键字'用户'附近的语法不正确。
我无法弄清楚这一点。谢谢你的帮助。
答案 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'";
});