将枚举存储为RavenDB中的整数

Dan*_*ang 11 enums integer conventions nosql ravendb

我想将Enums存储为RavenDB文档中的整数值而不是全名.这样做,我想确保,更改枚举值的名称,不会破坏持久性.

使用FluentNHibernate,我可以创建一个自定义约定,但我找不到任何与RavenDB匹配的东西.

Dav*_*fer 9

你现在可以这样做:

store.Conventions.SaveEnumsAsIntegers = true;
Run Code Online (Sandbox Code Playgroud)


Aye*_*ien 8

你可以通过创建一个JsonConverter来做到这一点,然后将其添加到documentStore.Conventions.Converters.

实际上,我们明确地存储了名称,因此您可以从中删除EnumJsonConverter documentStore.Conventions.Converters

  • @NicolasCadilhac和Daniel Lang,通过存储名称,如果枚举值发生变化,你仍会得到相同的枚举.例如公共枚举Fruit {Apple,Orange}改为公共枚举Fruit {Banana,Apple,Orange}任何以前持久存在的Apple将是Banana.使用字符串apple将永远是苹果,除非字符串更改:) (8认同)
  • @dlang在撰写本评论时,我能够这样做:`Session.Advanced.Conventions.CustomizeJsonSerializer = serializer => {serializer.Converters.Remove(serializer.Converters.Single(x => x是Raven. Abstractions.Json.JsonEnumConverter);};` (3认同)