刚接触EF,使用Database First,生成的Model中的导航属性都变成ICollect<T>;
当前需要把该Model应用到webService,webService在处理这种转化就报错了;
想通过加标签[System.Xml.Serialization.XmlIgnore]来解决,结果直接报错了;请一个比较好的解决方案;
应该导航属性造成的吧,而且webservice的实体是得有xml序列化的吧
是导航属性造成的,有没有比较舒服点的解决方法? 难不成要重新定义model
@Devin Mao: 不用,改T4模版就行了.你这个问题还比较好改,
@吴瑞祥: 把ICollect<T> 换成 Collect<T> ? 有试这样吗?
@Devin Mao: 不是,把导航属性弄成序列化的,要是你还需要导航属性,就再定义一个属性返回原来导航属性的值的类型就弄成能序列化的
@吴瑞祥: 不太明白;如果我的模型是这样,
public partial class Users { public Users() { this.UsersRoleRelation = new HashSet<UsersRoleRelation>(); } public int UsersID { get; set; } public virtual ICollection<UsersRoleRelation> UsersRoleRelation { get; set; } }
调整成什么样的?
直接用json序列化,然后传输json(string)
后面再json反序列化
yeah,用json序列化也试过了,当前一个案例是 用户对象---用户角色关系:一个用户对应N个用户角色;我在获取用户信息的时候,某个用户对应的用户角色对象是一个空列表,JsonSerializer在序列化这个属性的时候报错
@Devin Mao: 空列表也应该为实例化后的List
@Moon.Orm塑造Orm经典: 导航属性生成后是 ICollect<T>这样的;序列化它的时候出错了
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; }
还有对象交叉应用的问题