C# Json反序列化EF和RIA服务的问题

C# Json反序列化EF和RIA服务的问题,c#,entity-framework,ria,json.net,C#,Entity Framework,Ria,Json.net,我有个奇怪的问题。我将WCF RIA与实体框架结合使用。我已经实现了一个通用搜索功能,它依赖于将结果实体作为字节[](输入Json.Net)发回,并且我能够绕过RIA的强类型性的各种限制。但是当我在客户端反序列化时,我的对象没有正确组装。现在我说的是什么意思 从技术上讲,json是一个字符串,由我转换为byte[],然后返回到客户端,包含我需要的相关实体信息。所以让我们假设这个实体叫做Account,它有一个关联的Person对象。json字符串,甚至是反序列化的jobject,都有这个Pers

我有个奇怪的问题。我将WCF RIA与实体框架结合使用。我已经实现了一个通用搜索功能,它依赖于将结果实体作为
字节[]
(输入Json.Net)发回,并且我能够绕过RIA的强类型性的各种限制。但是当我在客户端反序列化时,我的对象没有正确组装。现在我说的是什么意思

从技术上讲,json是一个字符串,由我转换为
byte[]
,然后返回到客户端,包含我需要的相关实体信息。所以让我们假设这个实体叫做Account,它有一个关联的Person对象。json字符串,甚至是反序列化的jobject,都有这个Person对象及其详细信息。但是,当我像
JsonConvert.DeserializeObject(jdata,settings)
那样反序列化时,Person为空,没有错误

我正在尝试的设置如下:

settings = new JsonSerializerSettings()
{
    //CheckAdditionalContent = true,
    PreserveReferencesHandling = PreserveReferencesHandling.All,
    //ReferenceLoopHandling = ReferenceLoopHandling.Serialize
    NullValueHandling = NullValueHandling.Ignore,
    DefaultValueHandling = DefaultValueHandling.Ignore,
    ObjectCreationHandling = ObjectCreationHandling.Replace,
    TypeNameHandling = TypeNameHandling.Auto 
}; 

有什么想法吗?

好的,想好了-所以在反序列化之前,我将下面的解析器附加到我的设置中,比如
settings.ContractResolver=new DynamicContractResolver()

现在Json中的所有内容都完全反序列化到对象中。我不知道为什么这不是默认行为

    public class DynamicContractResolver : DefaultContractResolver
    {
        protected override JsonProperty CreateProperty(System.Reflection.MemberInfo member, MemberSerialization memberSerialization)
        {
            var r = base.CreateProperty(member, memberSerialization);
            r.Ignored = false;
            return r;
        }
    }