11
votes

I would like to store Enums as integer-values inside a RavenDB-document instead of there full-name. Doing so, I would like to ensure, that changing the name of an enum-value, does not break persistence.

With FluentNHibernate, I can create a custom convention, but I didn't find anything matching with RavenDB.

3

3 Answers

9
votes

You can now just do:

store.Conventions.SaveEnumsAsIntegers = true;
8
votes

You can do that by creating a JsonConverter to do this, then add it to the documentStore.Conventions.Converters.

In fact, we store the name explicitly, so you can just remove the EnumJsonConverter from documentStore.Conventions.Converters

3
votes

As of today you can do this:

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

store.Conventions.QueryEnumsAsIntegers = true;

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