我已經開始使用NHibernate 3.0和PostgreSQL進行一個小型項目,到目前爲止,由於NHibernate網站已關閉,這個過程有點粗糙,我相信這個答案在他們的網站的某處。使用NHibernate和PostgreSQL引用列名稱
我有了這兩列(當然還有更多的真正的表)的數據庫:
int ID
String Feature
現在我使用的是FluentNHibernate做映射,是這樣的:
public class MyEntityMap: ClassMap<MyEntity>
{
public MyEntityMap()
{
Id(x => x.ID);
Map(x => x.Feature);
}
}
和LINQ查詢走出數據
var strucs = from str in session.Query<MyEntity>()
where str.ID < 5
select str;
查詢將產生正確的SQL語句,很好。問題是,因爲我在我的列名大寫字母,你必須包起來引號,但生成的SQL代碼看起來是這樣的:
SELECT this_.ID as ID0_0_, this_.feature as feature0_0_,
FROM "MyEntity" this_ WHERE this_.ID < 5
凡列沒有他們周圍的報價。如果我運行這個,我得到一個「列this_.id」未找到等
有誰知道我可以如何讓NHibernate的列名包裝在引號?
編輯:因爲有一個第三方程序必須全部大寫一些列我不能小寫列名。
我嘗試添加.ExposeConfiguration(CFG => cfg.SetProperty(「hbm2ddl.keywords」,「自動報價」),但它似乎並沒有做任何事情。
hmm它會在'public override IDataBaseSchema GetDataBaseSchema(DbConnection connection)''拋出一個錯誤',因爲'PostgreSQLDialect' doesn'我不知道爲什麼沒有人爲PostgreSQL實現這個方法 – 2010-08-01 23:24:41
感謝您在正確的方向上的點,我 – 2010-08-02 00:03:09
@Nathan,你可以分享解決方案嗎? – 2011-04-04 13:36:01