首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

Entity Framework 的导航属性如何序列化

2012-09-06 
Entity Framework 的导航属性怎么序列化?Entity Framework 的导航属性怎么序列化?我记得以前写的程序是正

Entity Framework 的导航属性怎么序列化?
Entity Framework 的导航属性怎么序列化?

我记得以前写的程序是正确的,今天发现出错了,也不知道什么时候开始出错的。

一个投票主题的实体类,里面包含了投票选择的实体类集合。

原先意图是一次就能返回需要的主从表数据。

有些地方要用ajax 加载界面,把实体类序列化的时候报告,重复引用

using (Entities db = new Entities())
  { 
  var q = from x in db.TopWinCMS_Vote.Include("VoteChoiceInfo")
  where x.ID == id && x.Pass == 1
  select x;
  return q.FirstOrDefault();
  }

C# code
 [DataContractAttribute]    public partial class VoteInfo    {        public VoteInfo()        {            this.VoteChoiceInfo = new HashSet<VoteChoiceInfo>();        }            [DataMember]        public int ID { get; set; }        [DataMember]        public string Title { get; set; }        [DataMember]        public int Pass { get; set; }        [DataMember]        public System.DateTime CheckInTime { get; set; }        [DataMember]        public int VoteType { get; set; }        [DataMember]        public string PicUrl { get; set; }        [DataMember]        public System.DateTime EndData { get; set; }        [DataMember]        public string windowsize { get; set; }        [DataMember]        public string TemplateFileName { get; set; }        [DataMember]        public int LimitIP { get; set; }            [DataMember]        public   ICollection<VoteChoiceInfo> VoteChoiceInfo { get; set; }    }


C# code
 [DataContractAttribute]    public partial class VoteChoiceInfo    {        [DataMember]        public int ID { get; set; }        [DataMember]        public string ChoiceTitle { get; set; }        [DataMember]        public int VoteNum { get; set; }        [DataMember]        public string PicUrl { get; set; }        [DataMember]        public int IsDefault { get; set; }        [DataMember]        public int VoteID { get; set; }        [DataMember]        public int OrderID { get; set; }            [DataMember]        public virtual VoteInfo VoteInfo { get; set; }    }


由此可见 VoteInfo 里面包含VoteChoiceInfo ,VoteChoiceInfo 里面包含VoteInfo 。
经断点可以看到,查询出来的实体类是无限递归下去。

序列化的时候报
““TopWinCMS.Model.VoteChoiceInfo”类型的对象图包含循环,如果禁用引用跟踪,择无法对其进行序列化。”

[解决办法]
用什么序列化的?DataContractSerializer 的话构造的时候把preserveObjectReferences设置为true
参考http://blogs.msdn.com/b/sowmy/archive/2006/03/26/561188.aspx

热点排行