ScriptIgnore 属性被忽略
ScriptIgnore Attribute Being Ignored
我正在尝试序列化 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; }
};
这两个实体都映射到数据库中的同名实体,还有一个中间体 table UserRoles
,它没有通过但被映射为自定义 EntityTypeConfiguration
当我序列化 User
对象时,出现错误:
A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.User_7A469191462B9ADC27B374089E18004C2D72F0D107975B83F04E7A46145E1B1E'.
显然,通过查看 User
和 Role
类,它们都包含彼此的集合,这就是为什么会生成 circular reference
错误,但我假设通过为 Users
和 Roles
成员添加 ScriptIgnore
属性,在这种情况下它们将被忽略。
好吧,也许我发帖太快了。
这是答案:
ScriptIgnore, JsonSerializer not paying any attention?
使用 [ScriptIgnore(ApplyToOverrides = true)]
参数修复它!
我正在尝试序列化 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; }
};
这两个实体都映射到数据库中的同名实体,还有一个中间体 table UserRoles
,它没有通过但被映射为自定义 EntityTypeConfiguration
当我序列化 User
对象时,出现错误:
A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.User_7A469191462B9ADC27B374089E18004C2D72F0D107975B83F04E7A46145E1B1E'.
显然,通过查看 User
和 Role
类,它们都包含彼此的集合,这就是为什么会生成 circular reference
错误,但我假设通过为 Users
和 Roles
成员添加 ScriptIgnore
属性,在这种情况下它们将被忽略。
好吧,也许我发帖太快了。
这是答案:
ScriptIgnore, JsonSerializer not paying any attention?
使用 [ScriptIgnore(ApplyToOverrides = true)]
参数修复它!