我想將枚舉存儲爲RavenDB文檔中的整數值而不是全名。這樣做,我想確保,更改枚舉值的名稱,不會中斷持久性。在RavenDB中將枚舉存儲爲整數
使用FluentNHibernate,我可以創建自定義約定,但是我沒有找到與RavenDB匹配的任何內容。
我想將枚舉存儲爲RavenDB文檔中的整數值而不是全名。這樣做,我想確保,更改枚舉值的名稱,不會中斷持久性。在RavenDB中將枚舉存儲爲整數
使用FluentNHibernate,我可以創建自定義約定,但是我沒有找到與RavenDB匹配的任何內容。
你可以現在只是做:
store.Conventions.SaveEnumsAsIntegers = true;
你可以通過創建一個JsonConverter來做到這一點,然後將其添加到documentStore.Conventions.Converters
。
事實上,我們店的名稱,明確,所以你可以從documentStore.Conventions.Converters
刪除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
截至今天,它更短'store.Conventions.SaveEnumsAsIntegers = true;'。 – mrydengren
謝謝。我設法做到了。因爲這與NHibernate一樣,我只是想知道是否有任何好的理由來存儲字符串值而不是整數。你爲什麼這樣設計呢? –
@dlang在撰寫本評論時,我可以這樣做: 'Session.Advanced.Conventions.CustomizeJsonSerializer = serializer => {{serializer.Converters.Remove(serializer.Converters.Single(x => x是Raven.Abstractions.Json.JsonEnumConverter); };' –
@Ayende我想知道爲什麼存儲枚舉名稱是默認的... –