在wcf ria服务中调用无法包含外键表的操作

时间:2012-11-08 04:52:51

标签: mvvm silverlight-4.0 wcf-ria-services ria

Entity diagram

您好。    我正在使用一个Invoke Operation返回一个类“Product”

public Product GetProductById(int Id)
        {
            Product Record = this.ObjectContext.Product.Include("Order_Detail").Where(d=>d.ProductID=Id).FirstOrDefault()
            return Record;
        }

但是我无法在类

的已完成事件中获得Order_Detail
InvokeOperation<Product> Invk = ObjProduct.GetProductById();
                Invk.Completed += (sender, e) =>
                {
                    if (!Invk.HasError)
                    {
                        Product ObjProduct = Invk.Value;
                        Order objorder=ObjProduct.Order_Detail;
                    }
                };

我得到ObjProduct.Order_Detail为Null我不知道为什么我无法在此产品实体中包含Order_Detail

我也在元数据中写了[Include]

[Include]
public Order Order { get; set; }        

但是我仍然无法在集合中获得Order_Detail。 等待积极的回应。

1 个答案:

答案 0 :(得分:2)

这是预期的行为。调用用于在服务器上执行操作或检索简单对象。
正如您所看到的,InvokeOperation回调不包含为包含实体腾出空间的常用Entities / AllEntities属性。
我建议您使用带参数的标准加载操作来获取数据。

public IQueryable<Product> GetProductById(int Id)
    {
        return this.ObjectContext.Product.Include("Order_Detail").Where(d=>d.ProductID=Id);
    }

如果你想要实现的是“非累积执行”(即不加载你的domainContext的entityContainer和查询结果),而不是从Mathew Charles看看这个post