none
请问linq to entity生成的objectquery<T>对象如何在序列化时仅包含记录字段,不包括Entitystate,EntitySetName等导航属性 RRS feed

  • 问题

  • 使用实体框架,在对objectquery序列化时,发现json对象中包含Entitystate,EntitySetName等属性,请问如何在序列化时仅序列化对象的数据库字段,而不序列化其他的导航信息。
    另外我想说一下,使用linq to sql查询时序列化IQueriable<T>就不会出现多余字段,不知道是linq to entity 估计设计还是有什么方法来转换呢
     
    2009年11月28日 6:13

答案

  •   你可以用另一个方法解决这个问题
    当你创造这个类型已经不是原本生成的sql实体 System.Data.Linq.DataContext 是继承了System.Data.Objects.DataClasses.EntityObject这个类包括自身属性 没有办法去掉! 你可以用linq to sql 
    2009年11月28日 15:30
  • 可以用.Net 4.0支持的POCO

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年11月28日 23:39
    版主

全部回复

  • 啊,自己找到方法了,在这跟大家说一下,最简单的方法应该是直接生成包含所有属性的匿名对象 ,这样序列化时就不会产生多余属性了,如果要作为函数返回值时,可以用
    var query =  from q in Entity.table
    select new MyDbClass
    {
       id= q.id,
       .....
    };
    来选择生成新的对象从而实现序列化。
    2009年11月28日 6:10
  •   你可以用另一个方法解决这个问题
    当你创造这个类型已经不是原本生成的sql实体 System.Data.Linq.DataContext 是继承了System.Data.Objects.DataClasses.EntityObject这个类包括自身属性 没有办法去掉! 你可以用linq to sql 
    2009年11月28日 15:30
  • 可以用.Net 4.0支持的POCO

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年11月28日 23:39
    版主
  • 多谢大家的答复
    2009年11月29日 1:14