流畅的NHibernate列映射与保留字

Jos*_*ose 15 nhibernate fluent-nhibernate

我已经读过,使用后退勾号应该允许使用保留字.我正在使用SQL Server和Fluent NHibernate,并且列名为"File".如果我用它来映射

"`File" 
Run Code Online (Sandbox Code Playgroud)

它尝试使用

[Fil]
Run Code Online (Sandbox Code Playgroud)

所以它正确添加括号,但从末尾删除"e".如果我将其映射为

"`Filee"
Run Code Online (Sandbox Code Playgroud)

它用

[File]
Run Code Online (Sandbox Code Playgroud)

正确.

我做错了什么或者这是NHibernate或Fluent Nhibernate中的错误?

Mat*_*ert 20

你需要把'放在两边,像这样:

"`File`"
Run Code Online (Sandbox Code Playgroud)

正如@Astaar所说,完整的语法是:

Map(x => x.File).Column("`File`");
Run Code Online (Sandbox Code Playgroud)


Ast*_*aar 5

要非常清楚,确切的语法是

Map(x => x.File).Column("`File`");
Run Code Online (Sandbox Code Playgroud)


Dan*_*iel 5

这里有非手动配置选项,如下所示:NHibernate: forcing square括号在模式导出中?

以及替代方案:Fluent NHibernate 和 PostgreSQL、SchemaMetadataUpdater.QuoteTableAndColumns - System.NotSupportedException: 不支持指定的方法

例如 SchemaMetadataUpdater.QuoteTableAndColumns(cfg),在 FluentNhibernate 中,它看起来像

var config = Fluently.Configure()
   ...
   ...
   .ExposeConfiguration(cfg => SchemaMetadataUpdater.QuoteTableAndColumns);
Run Code Online (Sandbox Code Playgroud)