2011-07-21 44 views
11

我想將枚舉存儲爲RavenDB文檔中的整數值而不是全名。這樣做,我想確保,更改枚舉值的名稱,不會中斷持久性。在RavenDB中將枚舉存儲爲整數

使用FluentNHibernate,我可以創建自定義約定,但是我沒有找到與RavenDB匹配的任何內容。

回答

9

你可以現在只是做:

store.Conventions.SaveEnumsAsIntegers = true; 
8

你可以通過創建一個JsonConverter來做到這一點,然後將其添加到documentStore.Conventions.Converters

事實上,我們店的名稱,明確,所以你可以從documentStore.Conventions.Converters

+1

謝謝。我設法做到了。因爲這與NHibernate一樣,我只是想知道是否有任何好的理由來存儲字符串值而不是整數。你爲什麼這樣設計呢? –

+3

@dlang在撰寫本評論時,我可以這樣做: 'Session.Advanced.Conventions.CustomizeJsonSerializer = serializer => {{serializer.Converters.Remove(serializer.Converters.Single(x => x是Raven.Abstractions.Json.JsonEnumConverter); };' –

+1

@Ayende我想知道爲什麼存儲枚舉名稱是默認的... –

3

刪除EnumJsonConverter到今天爲止,你可以這樣做:

store.Conventions.CustomizeJsonSerializer = jsonSerializer => 
{ 
    jsonSerializer.Converters.Remove(jsonSerializer.Converters.Where(c => 
    c.GetType() == typeof(JsonEnumConverter)).First()); 
}; 

store.Conventions.QueryEnumsAsIntegers = true; 

來源:http://groups.google.com/group/ravendb/browse_thread/thread/18fef7b38252b27d

+4

截至今天,它更短'store.Conventions.SaveEnumsAsIntegers = true;'。 – mrydengren