在生成MS SQL Server的SQL架构导出时,有没有办法告诉NHibernate为所有表名和列名(如[MyColumn]
)使用方括号?我有一个遗留数据库,它使用某些列的保留名称,并且运行使用NH生成的SQL脚本会因此而抛出错误。
我希望避免为每列单独指定。
更新:我正在使用正确的方言:
MsSqlConfiguration.MsSql2008.ConnectionString(connectionString)
更新2:@UpTheCreek指出了正确的方向 - 反引号,这帮助我找到了“ NHibernate in Action ”一书中的答案(第76页):
除了引用反引号中的所有表名和列名之外,没有办法强迫NHibernate在任何地方使用带引号的标识符。
答案 0 :(得分:11)
更简单的方法:
SchemaMetadataUpdater.QuoteTableAndColumns(config)
(在构建SessionFactory之前)
这将自动引用所有保留名称。
答案 1 :(得分:2)
在列名称周围的映射文件中使用反引号。 NH应该使用db方言的正确字符替换它们(在您的方括号中)。
即。使用方法:
<class name="SomeClass" table="`SomeTable`">
注意 - 它不适用于撇号。反引号位于大多数键盘的左上角。
答案 2 :(得分:0)
您需要为数据库使用(或写入)正确的方言