代码改变世界

解决方法:Submit 操作失败。为类型“BomExtend”上的集合属性“BomChildrenList”传递了一个或多个关联对象,但目标集合为 null。

2011-10-13 15:45  starlet  阅读(442)  评论(0编辑  收藏  举报

实体:BomExtend为自定义实体

属性:BomChildrenList为自定义实体BomExtend的一个属性

 

   [DataContract]
    public class BomExtend
    {
        [Key, DataMember]
        public Guid Number { getset; }
 
        [DataMember]
        public Guid ParentNumber { getset; }

        [DataMember]
        [Association("Bomchildren""Number""ParentNumber")]
        [Include]
        public List<BomExtend> BomChildrenList { getset; }

    }

当在客户端添加数据并且保存时提示错误:

System.ServiceModel.DomainServices.Client.DomainOperationException:
Submit 操作失败。为类型“BomExtend”上的集合属性“BomChildrenList”传递了一个或多个关联对象,但目标集合为 null。

客户端添加数据代码:

        BomExtend childBomExtend = new BomExtend();
        childBomExtend.Number = Guid.NewGuid();
        //parentBomExtend为父RowEntity   
        childBomExtend.ParentNumber = parentBomExtend.Number;
        parentBomExtend.BomChildrenList.Add(childBomExtend);

 当SubmitChange后,提示错误

 

错误原因:

silverlight客户端在增加新childBomExtend 时,仅仅是对某一个数据实体的BomChildrenList属性增加一个记录,而这个属性赋值后并不能传回到DomainService对应的方法,(具体原因不清楚)反正是不能传递,所以DomainServices报了一个异常

 

解决办法:

修改客户端代码:

        BomExtend childBomExtend = new BomExtend();
        childBomExtend.Number = Guid.NewGuid();
        //parentBomExtend为父RowEntity   
        childBomExtend.ParentNumber = parentBomExtend.Number;
        parentBomExtend.BomChildrenList.Add(childBomExtend);
        _domainServicesClient.BomExtends.Add(childBomExtend);

 

 问题解决!!