我讀過使用反勾號`應允許使用保留字。我正在使用SQL Server和Fluent NHibernate,並有一個列名稱「文件」。如果我有流利的NHibernate列映射與保留字
"`File"
映射它嘗試使用
[Fil]
所以它的正確加括號,但是從最終去掉了「E」。如果我映射它作爲
"`Filee"
它正確地使用
[File]
。
我做錯了什麼或者這是NHibernate還是Fluent Nhibernate中的錯誤?
我讀過使用反勾號`應允許使用保留字。我正在使用SQL Server和Fluent NHibernate,並有一個列名稱「文件」。如果我有流利的NHibernate列映射與保留字
"`File"
映射它嘗試使用
[Fil]
所以它的正確加括號,但是從最終去掉了「E」。如果我映射它作爲
"`Filee"
它正確地使用
[File]
。
我做錯了什麼或者這是NHibernate還是Fluent Nhibernate中的錯誤?
你需要把`兩側,像這樣:
"`File`"
由於@Astaar說,完整的語法是:
Map(x => x.File).Column("`File`");
哦,我花了很長時間的答案。謝謝! – 2010-05-21 13:14:54
方括號也起作用: Map(x => x.File).Column(「[File]」); – Chronozoa 2015-05-27 18:55:21
@Chronozoa你知道這是否是最近的增加?我發誓,2010年,當我回答這個問題時,我嘗試了這種方式,但沒有奏效。 – 2015-07-06 21:55:27
要非常清楚,確切的語法是
Map(x => x.File).Column("`File`");
有此非手動配置選項,這裏介紹:NHibernate: forcing square brackets in schema export?
例如SchemaMetadataUpdater.QuoteTableAndColumns(cfg)
這FluentNhibernate看起來像
var config = Fluently.Configure()
...
...
.ExposeConfiguration(cfg => SchemaMetadataUpdater.QuoteTableAndColumns);
我認爲這個解決方案更好,因爲它是一次性設置,而不是在每個地圖中專門添加所有新的列名作爲保留字。 – 2017-10-05 20:56:26
此方法已棄用,不適合我。 – sky91 2018-02-05 06:28:53
你有沒有試過做出來與fluentNHibernate任何事情。如果你導出hbm文件fluentNHibernate會爲你寫入table =「'File'」。 – 2009-10-09 23:06:20