NHibernate:在模式导出中强制使用方括号?
在为 MS SQL Server 生成 SQL 模式导出时,有没有办法告诉 NHibernate 对所有表和列名称(如 [MyColumn]
)使用方括号?我有一个旧数据库,它对某些列使用保留名称,并且运行使用 NH 生成的 SQL 脚本会因此引发错误。
我想避免必须为每一列单独指定这一点。
更新:我使用了正确的方言:
MsSqlConfiguration.MsSql2008.ConnectionString(connectionString)
更新 2:@UpTheCreek 为我指出了正确的方向 - 反引号,这帮助我在“NHibernate in Action”一书中找到答案(第 76 页) :
除了在反引号中引用所有表名和列名之外,没有办法强制 NHibernate 在任何地方使用带引号的标识符。
Is there a way to tell NHibernate to use square brackets for all table and column names (like [MyColumn]
) when generating the SQL schema export for MS SQL Server? I have a legacy database that uses reserved names for certain columns and running the SQL script generated using NH throws an error because of it.
I want to avoid having to specify this separately for each column.
UPDATE: I'm using the correct dialect:
MsSqlConfiguration.MsSql2008.ConnectionString(connectionString)
UPDATE 2: @UpTheCreek pointed me in the right direction - backticks, which helped me find the answer in the "NHibernate in Action" book (p. 76):
There is no way, apart from quoting all table and column names in backticks, to force NHibernate to use quoted identifiers everywhere.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
更简单的方法:(
在构建 SessionFactory 之前)
这将自动引用所有保留名称。
Easier approach:
(Before building SessionFactory)
That will quote all the reserved names automatically.
在映射文件中的列名称周围使用反引号。 NH 应该用您的 db 方言的正确字符替换这些字符(在您的情况下为方括号)。
即使用:
注意 - 它不适用于撇号。反引号位于大多数键盘的左上角。
Use backticks in your mapping files around the column names. NH should replace these with the correct character for your db dialect (in your case square brackets).
i.e. use:
NB - It won't work with an apostrophe. The backtick is located top left on most keyboards.
您需要为您的数据库使用(或编写)正确的方言
You need to use (or write) the correct dialect for your database