私は、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
I User
オブジェクトをシリアル化するために来て、エラーが発生したと言って:両方を見て、明らかに
A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.User_7A469191462B9ADC27B374089E18004C2D72F0D107975B83F04E7A46145E1B1E'.
、とRole
クラスでは、どちらも両方ともコレクションが含まれているため、circular reference
エラーが生成されましたが、Users
およびRoles
メンバーに対してScriptIgnore
属性を追加すると、このインスタンスでは無視されます。