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'.

Очевидно, глядя на обоих User и Role, оба они содержат коллекции друг друга, поэтому генерируется ошибка circular reference, но я предположил бы, что добавив атрибут ScriptIgnore к членам Users и Roles, они будут проигнорированы в этом случае.

ответ