我目前有一個枚舉在數據庫中作爲字符串。我現在要在numibernate上使用Linq Provider對這個Enum進行wuery和過濾,但我仍然收到異常。查詢使用nHibernate存儲爲字符串的枚舉Linq Provider
我試着將枚舉與枚舉的列表進行比較,嘗試.ToString() ,我仍然無法讓它工作。
是僅對Detached Criteria有效的自定義約定嗎?
我目前有一個枚舉在數據庫中作爲字符串。我現在要在numibernate上使用Linq Provider對這個Enum進行wuery和過濾,但我仍然收到異常。查詢使用nHibernate存儲爲字符串的枚舉Linq Provider
我試着將枚舉與枚舉的列表進行比較,嘗試.ToString() ,我仍然無法讓它工作。
是僅對Detached Criteria有效的自定義約定嗎?
你使用的是流利的NHibernate嗎?如果是這樣,你可以用戶Map()... 另外,確保你的自動映射不與Fluent NH衝突,並且你正確地註冊了所有的約定。
您需要創建一個自定義IUserType來將枚舉轉換爲其字符串表示形式並返回。有一個在C#here
還有一個後ABT同一個很好的例子:http://softwareblog.morlok.net/2009/07/02/mapping-enums-to-custom-strings-in-nhibernate/
希望有所幫助你..
你有一個使用流利nhibernate的例子嗎? –
我用GenericEnumMapper和從未有過的鏈接查詢任何問題。
Map(x => x.Status).CustomType<GenericEnumMapper<MerchantStatus>>();
不知道如何將其應用於AutoMapping,但因爲我很少使用它。也許是這樣的
.Override<MerchantStatus>(map =>
{
map.Map(x => x.Status)
.CustomType<GenericEnumMapper<MerchantStatus>>();
});
劑量這也適用於.Where(e => enumCollection.Contains(e.enum)) –
我從來沒有以這種方式使用它。我只做了一個小測試用例,它正在工作。我正在使用fluent-nhibernate 1.2與捆綁休眠。數據庫後端是postgresql。 –
我會試試這個。到目前爲止,我不得不解決這個問題。感謝您的指導。 –
我們正在使用流利的NHibernate和使用地圖(),該公約是正確註冊,因爲我們能夠查詢實體和值被保存並填充。當我嘗試查詢特定的枚舉字段時,人們來了。 –