我如何告诉RavenDB忽略一个属性而不是WebAPI ?



我有一个不想存储在RavenDB中的属性。如果我添加JsonIgnore属性,RavenDB会忽略,然后WebApi也会忽略。我仍然希望WebApi将数据序列化到web客户端。

我如何告诉RavenDB忽略属性,但仍然有WebApi序列化它?

RavenDB 2.0

using Raven.Imports.Newtonsoft.Json
public class Foo
{
    [JsonIgnore]
    public string Bar { get; set; }
}

因为它使用了raven的json.net的内部化副本- WebApi不会拾取该属性。

RavenDB 1.0 2.0

你可以直接使用自定义json契约解析器自定义对象的json序列化。

public class CustomContractResolver : DefaultRavenContractResolver
{
    public CustomContractResolver(bool shareCache) : base(shareCache)
    {
    }
    protected override List<MemberInfo> GetSerializableMembers(Type objectType)
    {
        var members = base.GetSerializableMembers(objectType);
        if (objectType == typeof(Foo))
            members.RemoveAll(x => x.Name == "Baz");
        return members;
    }
}

在初始化时将其连接到文档存储:

documentStore.Conventions.JsonContractResolver = new CustomContractResolver(true);
documentStore.Initialize();

因为它没有连接到其他地方,所以它只会影响到RavenDB。

相关内容

  • 没有找到相关文章

最新更新