我正在使用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列映射与保留字