首页 文章

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

提问于
浏览
6

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

我想避免为每列单独指定它 .

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

MsSqlConfiguration.MsSql2008.ConnectionString(connectionString)

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

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

3 回答

  • 0

    更简单的方法:

    SchemaMetadataUpdater.QuoteTableAndColumns(config)
    

    (在构建SessionFactory之前)

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

  • 2

    在列名称周围的映射文件中使用反引号 . NH应该用你的db方言的正确字符替换它们(在你的情况下是方括号) .

    即使用:

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

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

  • 11

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

相关问题