NHibernate:在模式导出中强制使用方括号?

时间:2010-11-05 09:08:04

标签: nhibernate fluent-nhibernate

在生成MS SQL Server的SQL架构导出时,有没有办法告诉NHibernate为所有表名和列名(如[MyColumn])使用方括号?我有一个遗留数据库,它使用某些列的保留名称,并且运行使用NH生成的SQL脚本会因此而抛出错误。

我希望避免为每列单独指定。

更新:我正在使用正确的方言:

MsSqlConfiguration.MsSql2008.ConnectionString(connectionString)

更新2:@UpTheCreek指出了正确的方向 - 反引号,这帮助我找到了“ NHibernate in Action ”一书中的答案(第76页):

  

除了引用反引号中的所有表名和列名之外,没有办法强迫NHibernate在任何地方使用带引号的标识符。

3 个答案:

答案 0 :(得分:11)

更简单的方法:

SchemaMetadataUpdater.QuoteTableAndColumns(config)

(在构建SessionFactory之前)

这将自动引用所有保留名称。

答案 1 :(得分:2)

在列名称周围的映射文件中使用反引号。 NH应该使​​用db方言的正确字符替换它们(在您的方括号中)。

即。使用方法:

<class name="SomeClass" table="`SomeTable`">

注意 - 它不适用于撇号。反引号位于大多数键盘的左上角。

答案 2 :(得分:0)

您需要为数据库使用(或写入)正确的方言