作为大多数人,当将(可怕的)EF对象序列化为JSON时,我也遇到了循环引用错误的问题.执行db.Detach(efObject)有帮助 – 但我仍然像“EntityKey”那样输出垃圾.
@H_404_2@所以我想知道是否有一个选项(通过JsConfig?)告诉序列化器通过名称(EntityKey)或类型(EntityReference< T>或EntityCollection< T>)忽略属性?
@H_404_2@或者我将被迫完全抛弃EF并切换到更好的东西(我不想手动定义ORM类 – 我希望它们是从DB自动生成的)?
解决方法
您不应该尝试重复使用
Entity Framework types as DTO’s,因为它们是DTO设计不佳的替代品.您应该使用ServiceStack的内置TranslateTo / PopulateFrom映射器(或AutoMapper)将它们映射到特殊用途的DTO类型并返回它们.
@H_404_2@话虽如此,请在要序列化的属性上使用IgnoreDataMember or specify DataMembers.