首页 新闻 会员 周边 捐助

对EF Codefirst 数据序列化怎么把导航属性的数据也序列化出来啊

0
悬赏园豆:20 [待解决问题]

今天,在做项目的过程中发现,对ef 的数据序列化的时候,发现其导航属性的数据没有被序列化,怎么办??急

chenchunyong的主页 chenchunyong | 初学一级 | 园豆:5
提问于:2012-03-08 10:51
< >
分享
所有回答(2)
0

导航属性的类型加了[Serializable]或者[DataContract]标记吗?

dudu | 园豆:30925 (高人七级) | 2012-03-08 18:12

您好,这个没有加,这个事要在Code first 定义的时候就加上去吗

支持(0) 反对(0) chenchunyong | 园豆:5 (初学一级) | 2012-03-09 14:00

我在code first 实体中加了,但还是不行

例如

  public class OperationPhase
    {
        public OperationPhase()
        {
            this.Aircrafts = new HashSet<Aircraft>();
        }
        public int OperationPhaseID { get; set; }
        [StringLength(16)]
        public string Name { get; set; }
        [StringLength(100)]
        public string Description { get; set; }

        [Include]

       [Serializable]
        public virtual ICollection<Aircraft> Aircrafts { get; set; }
    }

这样不行呀

支持(0) 反对(0) chenchunyong | 园豆:5 (初学一级) | 2012-03-09 14:03

@chenchunyong: 加在Aircraft的类的定义上

[Serializable]
public class Aircraft
{
}



支持(0) 反对(0) dudu | 园豆:30925 (高人七级) | 2012-03-10 22:10

@dudu: 你好,按照这样处理还是不行。EF中一对多关系的处理,导航属性序列化问题如何解决较好呢?

支持(0) 反对(0) 竹墨轩 | 园豆:58 (初学一级) | 2013-03-20 15:23
0

这是由于 LazyLoading 的关系,

不用去标记 Serializable。 最简单的办法 - 在 serialize  OperationPhase object之前 取一遍 Aircrafts

var aircrafts = op.Aircrafts.ToList();

然后serialize op object

gunsmoke | 园豆:3592 (老鸟四级) | 2012-06-12 13:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册