2011-07-21 17 views
11

Chciałbym przechowywać wyliczenia jako wartości całkowite w dokumencie RavenDB zamiast w miejscu o pełnej nazwie. Robiąc to, chciałbym się upewnić, że zmiana nazwy wartości-wartości nie przełamie trwałości.Przechowuj wyliczanie jako liczbę całkowitą w RavenDB

Dzięki FluentNHibernate mogę utworzyć niestandardową konwencję, ale nie znalazłem nic pasującego do RavenDB.

Odpowiedz

9

Ty możliwe, teraz wystarczy:

store.Conventions.SaveEnumsAsIntegers = true; 
8

Możesz to zrobić, tworząc JsonConverter, aby to zrobić, a następnie dodaj go do documentStore.Conventions.Converters.

W rzeczywistości, zapisać nazwę wyraźnie, więc można po prostu usunąć EnumJsonConverter z documentStore.Conventions.Converters

+1

Dzięki. Udało mi się to zrobić. Ponieważ tak samo było z NHibernate, po prostu zastanawiam się, czy istnieje jakiś dobry powód do przechowywania wartości łańcuchowej zamiast liczby całkowitej. Dlaczego tak to zaprojektowałeś? –

+3

@dlang W chwili pisania tego komentarza udało mi się zrobić to w ten sposób: 'Session.Advanced.Conventions.CustomizeJsonSerializer = serializer => { serializer.Converters.Remove (serializer.Converters.Single (x => x to Raven.Abstractions.Json.JsonEnumConverter); }; ' –

+1

@Ayende Również się zastanawiam, dlaczego przechowywanie nazw enum jest domyślne ... –

3

dzień dzisiejszy można to zrobić:

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

store.Conventions.QueryEnumsAsIntegers = true; 

Źródło: http://groups.google.com/group/ravendb/browse_thread/thread/18fef7b38252b27d

+4

Na dzień dzisiejszy jest jeszcze krótszy 'store.Conventions.SaveEnumsAsIntegers = true;'. – mrydengren

Powiązane problemy