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



我正在使用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()) + "]");

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

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

添加:数据库。KeywordsAutoImport=Hbm2DDLKeyWords.AutoQuote;

应该做的技巧

这对我来说似乎有些熟悉。没有承诺,但你可以尝试在用户周围使用引号,比如从"用户"中选择*或很好地提供架构所有者,比如从Mydb.User.中选择*

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

您也可以通过使用NHibernate的非DB特定转义符手动执行此操作:backtick`

在SQL Server中,您可以执行"[用户]"操作,但在Oracle中则不同。如果您使用"用户",NHibernate将根据您当前使用的数据库进行调整。

这可以在这个问题上看到:Fluent NHibernate列映射与保留字

最新更新