2011-08-17 91 views
2

我目前有一個枚舉在數據庫中作爲字符串。我現在要在numibernate上使用Linq Provider對這個Enum進行wuery和過濾,但我仍然收到異常。查詢使用nHibernate存儲爲字符串的枚舉Linq Provider

我試着將枚舉與枚舉的列表進行比較,嘗試.ToString() ,我仍然無法讓它工作。

是僅對Detached Criteria有效的自定義約定嗎?

回答

1

你使用的是流利的NHibernate嗎?如果是這樣,你可以用戶Map()... 另外,確保你的自動映射不與Fluent NH衝突,並且你正確地註冊了所有的約定。

+0

我們正在使用流利的NHibernate和使用地圖(),該公約是正確註冊,因爲我們能夠查詢實體和值被保存並填充。當我嘗試查詢特定的枚舉字段時,人們來了。 –

2

我用GenericEnumMapper和從未有過的鏈接查詢任何問題。

Map(x => x.Status).CustomType<GenericEnumMapper<MerchantStatus>>(); 

不知道如何將其應用於AutoMapping,但因爲我很少使用它。也許是這樣的

.Override<MerchantStatus>(map => 
{ 
    map.Map(x => x.Status) 
    .CustomType<GenericEnumMapper<MerchantStatus>>(); 
}); 
+0

劑量這也適用於.Where(e => enumCollection.Contains(e.enum)) –

+0

我從來沒有以這種方式使用它。我只做了一個小測試用例,它正在工作。我正在使用fluent-nhibernate 1.2與捆綁休眠。數據庫後端是postgresql。 –

+0

我會試試這個。到目前爲止,我不得不解決這個問題。感謝您的指導。 –