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成员,在这种情况下它们将被忽略。

回答