【问题标题】:ScriptIgnore Attribute Being Ignored [duplicate]ScriptIgnore 属性被忽略[重复]
【发布时间】:2016-09-06 21:27:22
【问题描述】:

我正在尝试序列化一个 DTO,但它倒下了,声称存在循环引用问题 - 这绝对是有效的。我有以下实体:

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

【问题讨论】:

    标签: asp.net-mvc entity-framework javascriptserializer ef-fluent-api


    【解决方案1】:

    好吧,也许我发帖太快了。

    这就是答案:

    ScriptIgnore, JsonSerializer not paying any attention?

    使用[ScriptIgnore(ApplyToOverrides = true)] 参数修复它!

    【讨论】:

      猜你喜欢
      • 2019-04-17
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多