Вызвать операцию в службах wcf ria, которые не могут включать таблицы внешних ключей

Диаграмма объекта

Привет. Я использую операцию вызова, которая возвращает класс «Продукт».

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 в этот объект Product

Я также написал [Включить] в метаданных

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

Но все же я не могу получить Order_Detail в коллекции. Ожидание положительного ответа.


person Smith.Patel    schedule 08.11.2012    source источник
comment
Я немного запутался: вы хотите получить заказ из вашего продукта? По вашей схеме я вижу только Order --›› Order_Detail --› Order. Можете ли вы объяснить это?   -  person mCasamento    schedule 08.11.2012
comment
Извините, я хочу Order_Detail от продукта   -  person Smith.Patel    schedule 08.11.2012


Ответы (1)


Это ожидаемое поведение. Вызовы предназначены для выполнения операции на сервере или извлечения простого объекта.
Как видите, обратный вызов InvokeOperation не содержит обычных свойств Entities/AllEntities, которые освобождают место для Included Entities.
Я предлагаю вам использовать стандартную операцию загрузки с параметром для получения ваших данных.

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

Если то, чего вы пытаетесь достичь, это «Выполнение без накопления» (т. Е. Не загружайте объект entityContainer вашего доменного контекста с результатом запроса), чем взгляните на этот сообщение от Мэтью Чарльза

person mCasamento    schedule 08.11.2012