c# – 如何将动态代理转换为POCO?
我正在尝试序列化域模型并遇到一个需要将动态代理转换为POCO的问题.我遇到的问题是通过模型中的虚拟属性存在循环引用.虽然我试图使用[ScriptIgnore]以使序列化程序不解析这些属性,但它仍然可以.我相信这是因为对象是动态代理,并且属性中仍然存在一些导致解析器进入的残余(这反过来导致递归错误“循环引用” – 我尝试将递归限制为3步但我得到了错误“超出递归步骤”).
如何将对象从动态代理转换为POCO以便可以序列化? 编辑:简单的例子 public class One : BaseViewModel { public int OneId { get; set; } public virtual ICollection<Two> Two { get; set; } } public class Two { public int TwoId { get; set; } public int OneId { get; set; } [ScriptIgnore] public virtual One One { get; set; } } public abstract class BaseViewModel { public string AsJson() { var serializer = new JavaScriptSerializer(); return serializer.Serialize(this); } } 解决方法
这是一个已知的问题
(所以大概你必须等待下面的预览版或最终版) http://connect.microsoft.com/VisualStudio/feedback/details/723060/ef-4-2-code-first-property-attributes-not-honoured 这是在.NET 4.5中修复的 根据该问题的评论,如果您使用的是当前版本的JSON.Net,您似乎可以通过使用NonSerializedAttribute而不是ScriptIgnoreAttribute来解决问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |