2013-02-20 63 views
2

我正在使用MVC4,EF5數據庫優先,Newtonsoft.Json將對象序列化爲JSON,例如在Web API控制器中。使用EF5和Newtonsoft.Json自引用循環

爲了避免自我引用循環的問題,我將屬性[JsonIgnore]設置爲我生成的類中的特定集合。

我的問題是,現在每次我更新我的模型,我必須讀取屬性的類。

我該如何避免這種情況?我認爲我必須編輯DBModel.tt腳本?我該怎麼辦?

回答

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