Nhibernate,如何使用sql server关键字作为表名?

时间:2012-01-04 17:35:37

标签: nhibernate s#arp-architecture s#arp

我正在使用s#arp lite框架构建我的应用程序。我的一个表名为User。但是User是一个SQL Server 2008关键字,因此它给我带来了问题。

我尝试修改代码以使用SQL Server关键字支持表格,但不能让它工作。

这是代码。

https://github.com/codai/Sharp-Lite/blob/master/Example/MyStore/app/MyStore.NHibernateProvider/Conventions.cs

第32行:我将其更改为以下代码

classCustomizer.Table("[" + Inflector.Net.Inflector.Singularize(type.Name.ToString()) + "]");

3 个答案:

答案 0 :(得分:3)

我已经在邮件列表上回答了这个问题,在这里发帖回答让其他人轻松找到(以及要点:)

https://github.com/codai/Sharp-Lite/blob/master/Example/MyStore/app/MyStore.NHibernateProvider/NHibernateInitializer.cs#L19

添加: db.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;

应该做的伎俩

答案 1 :(得分:0)

这对我来说似乎很模糊。 没有承诺,但您可以尝试在User周围使用引号,例如select * from“User” 要么 很好地提供架构所有者,例如从Mydb.User中选择*。

希望这会有所帮助。祝你好运!

答案 2 :(得分:0)

您也可以使用NHibernate的非DB特定转义字符手动执行此操作:反引号`

在SQL Server中,您可以执行“[User]”,但在Oracle中它会有所不同。如果使用“`User”,NHibernate会将其调整为您当前使用的数据库。

这可以在这个问题上看到:Fluent NHibernate Column Mapping with Reserved Word