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

时间:2013-02-20 11:02:46

标签: asp.net json entity-framework serialization

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

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

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

我怎么能避免这种情况?我想我必须编辑DBModel.tt脚本?我该怎么办?

1 个答案:

答案 0 :(得分:2)

您应该能够使用具有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