首页 新闻 搜索 专区 学院

EF生成的model怎么能在webService中使用

0
悬赏园豆:40 [已关闭问题] 关闭于 2014-05-17 17:32

刚接触EF,使用Database First,生成的Model中的导航属性都变成ICollect<T>;

当前需要把该Model应用到webService,webService在处理这种转化就报错了;

想通过加标签[System.Xml.Serialization.XmlIgnore]来解决,结果直接报错了;请一个比较好的解决方案;

Devin Mao的主页 Devin Mao | 小虾三级 | 园豆:596
提问于:2014-05-07 15:53
< >
分享
所有回答(3)
0

应该导航属性造成的吧,而且webservice的实体是得有xml序列化的吧

吴瑞祥 | 园豆:28841 (高人七级) | 2014-05-07 16:05

是导航属性造成的,有没有比较舒服点的解决方法? 难不成要重新定义model

支持(0) 反对(0) Devin Mao | 园豆:596 (小虾三级) | 2014-05-07 16:07

@Devin Mao: 不用,改T4模版就行了.你这个问题还比较好改,

支持(0) 反对(0) 吴瑞祥 | 园豆:28841 (高人七级) | 2014-05-07 16:15

@吴瑞祥: 把ICollect<T> 换成 Collect<T> ? 有试这样吗?

支持(0) 反对(0) Devin Mao | 园豆:596 (小虾三级) | 2014-05-07 16:21

@Devin Mao: 不是,把导航属性弄成序列化的,要是你还需要导航属性,就再定义一个属性返回原来导航属性的值的类型就弄成能序列化的

支持(0) 反对(0) 吴瑞祥 | 园豆:28841 (高人七级) | 2014-05-07 16:32

@吴瑞祥: 不太明白;如果我的模型是这样,

 public partial class Users
    {
        public Users()
        {
            this.UsersRoleRelation = new HashSet<UsersRoleRelation>();
        }

        public int UsersID { get; set; }
        public virtual ICollection<UsersRoleRelation> UsersRoleRelation { get; set; }
    }

 

调整成什么样的?

支持(0) 反对(0) Devin Mao | 园豆:596 (小虾三级) | 2014-05-07 16:38
0

直接用json序列化,然后传输json(string)

后面再json反序列化

【秦时明月】 | 园豆:803 (小虾三级) | 2014-05-07 16:09

yeah,用json序列化也试过了,当前一个案例是 用户对象---用户角色关系:一个用户对应N个用户角色;我在获取用户信息的时候,某个用户对应的用户角色对象是一个空列表,JsonSerializer在序列化这个属性的时候报错

支持(0) 反对(0) Devin Mao | 园豆:596 (小虾三级) | 2014-05-07 16:12

@Devin Mao: 空列表也应该为实例化后的List

支持(0) 反对(0) 【秦时明月】 | 园豆:803 (小虾三级) | 2014-05-07 16:19

@Moon.Orm塑造Orm经典: 导航属性生成后是 ICollect<T>这样的;序列化它的时候出错了

支持(0) 反对(0) Devin Mao | 园豆:596 (小虾三级) | 2014-05-07 16:26
0
 1  public partial class Users
 2     {
 3         public Users()
 4         {
 5             this.UsersRoleRelation = new HashSet<UsersRoleRelation>();
 6         }
 7 
 8         public int UsersID { get; set; }
 9         public virtual ICollection<UsersRoleRelation> UsersRoleRelation { get; set; }
10     }

将上面的

1 public virtual ICollection<UsersRoleRelation> UsersRoleRelation { get; set; }

改为

public virtual List<UsersRoleRelation> UsersRoleRelation { get; set; }
duguao | 园豆:124 (初学一级) | 2014-05-08 13:21

还有对象交叉应用的问题

支持(0) 反对(0) Devin Mao | 园豆:596 (小虾三级) | 2014-05-08 16:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册