使用EF5和Newtonsoft.Json自引用循环

问题描述:

我正在使用MVC4,EF5数据库优先,Newtonsoft.Json将对象序列化为JSON,例如在Web API控制器中。使用EF5和Newtonsoft.Json自引用循环

为了避免自我引用循环的问题,我将属性[JsonIgnore]设置为我生成的类中的特定集合。

我的问题是,现在每次我更新我的模型,我必须读取属性的类。

我该如何避免这种情况?我认为我必须编辑DBModel.tt脚本?我该怎么办?

您应该可以使用具有MetadataType属性的元数据类。如果您生成的类是:

public partial class MyClass{ 

    public string SomeProperty {get; set; } 

    public string SomePropertyToIgnore {get; set; } 
} 

然后,你需要创建一个元数据类,像这样(在相同的命名空间):

public class MyClass_Metadata{ 
    [JsonIgnore] 
    public string SomePropertyToIgnore {get; set; } 
} 

的创建部分您生成的类(在同一个命名空间)与MetadatType属性应用于:

[MetadataType(typeof(MyClass_Metadata))] 
public partial class MyClass{ 
} 

价:http://msdn.microsoft.com/en-us/library/ee707339(v=vs.91).aspx