none
采用实体框架和RIA开发Silverlight程序时关系表的问题。 RRS feed

  • 问题

  • 在数据库中我对表建立了关系,在程序中根据ID通过调用DomainContext.Load,在回调事件的参数LoadOperation<Customer>里面获得了Customer,并且数据都是正确的。可是问题来了,Customer里面有订单列表,我在服务器上通过Customer。PurchaseOrder.Load()把订单信息载入了。但是返回到客户端后,订单信息依旧是没有的。难道需要订单细节还要再次通过DomainContext。Load获取吗?类似的问题还有就是反过来我根据ID获得订单后查看Customer也是没有数据。
    2010年10月7日 11:44

答案

  • 你的customer 里面没有包含 订单信息

    在metadata 里的customer metadata 下面的 entitycollection<PurchaseOrder> 上添加[Include]

    在domainservice 里面

    GetCustomer 包含PurchaseOrder

    例如

     public IQueryable<Department> GetDepartment()

            {

                return this.ObjectContext.Department

                    .Include("Employeer")

                    .Include("Group")

                    .OrderBy(e => e.DepNo);

            }

     


    冷月
    • 已标记为答案 超然 2010年10月8日 1:31
    2010年10月7日 11:49

全部回复

  • 你的customer 里面没有包含 订单信息

    在metadata 里的customer metadata 下面的 entitycollection<PurchaseOrder> 上添加[Include]

    在domainservice 里面

    GetCustomer 包含PurchaseOrder

    例如

     public IQueryable<Department> GetDepartment()

            {

                return this.ObjectContext.Department

                    .Include("Employeer")

                    .Include("Group")

                    .OrderBy(e => e.DepNo);

            }

     


    冷月
    • 已标记为答案 超然 2010年10月8日 1:31
    2010年10月7日 11:49
  • 按照你的写法还是没有,我的代码是这样的

    服务器端

            public IQueryable<InquiryC> GetInquiryCByID(Guid ID)//根据ID获得询价单
            {
                return this.ObjectContext.InquiryC.Include("InquiryDetailsC").Where(x => x.InquiryID == ID);
            }

    客户端(部分)

            public void GetInquiryCByIDQuery(LoadOperation<InquiryC> lo)
            {
                try
                {
                    _InquiryC = lo.Entities.First();//获得第一条
                    grid1.DataContext = _InquiryC;//数据绑定到grid1--此处正确,数据也正确出来了
                    agDataGrid1.DataSource = _InquiryC.InquiryDetailsC;//绑定细节--此处错误,通过调试发现这里的_InquiryC.InquiryDetailsC.Count==0
                }
                catch (Exception ex)
                {
                    ChildWindow errorWin = new ErrorWindow(ex);
                    errorWin.Show();
                }
            }

    2010年10月7日 12:25
  • 问题解决,就如冷月说的,HOHO
    2010年10月8日 1:31