0

我試圖序列化一個DTO,但是它的下降,聲稱一個循環引用問題 - 這絕對有效。我有以下實體:ScriptIgnore屬性被忽略

public class User { 
    [Key] 
    public int UserID { get;set; } 
    public string EmailAddress { get;set; } 
    // etc 
    [ScriptIgnore] 
    public virtual ICollection<Role> Roles { get;set; } 
}; 

public class Role { 
    [Key] 
    public int RoleID { get;set; } 
    // etc 
    [ScriptIgnore] 
    public virtual ICollection<User> Users { get;set; } 
}; 

這兩個實體的映射到其同名的數據庫,以及一箇中間表UserRoles未通過引進,但被映射爲一個自定義EntityTypeConfiguration

當我來序列化對象User,時出現錯誤,他說:

A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.User_7A469191462B9ADC27B374089E18004C2D72F0D107975B83F04E7A46145E1B1E'.

顯然,通過觀察兩個UserRole類,它們都包含彼此的集合,這就是爲什麼會生成circular reference錯誤,但我會假設通過將ScriptIgnore屬性添加到UsersRoles成員,在這種情況下它們將被忽略。

回答