Как использовать dyanamic linq в wcf?

#wcf #linq #dynamic

#wcf #linq #динамический

Вопрос:

Я использую linq-to-entity для динамического извлечения данных и создал метод следующим образом:

 public List<object> getDynamicList(string tablename, List<string> colnames)
{
    try
    {
        var query = DynamicQueryable.getDynamicData(dbcontext, tablename, colnames);
        List<object> objQueryable = new List<object>();
        object obj = query.AsQueryable();
        objQueryable.Add(obj);
        return objQueryable;
    }
    catch (Exception ex)
    {
        HandleError(ex);
    }
}
  

этот метод в службе wcf внутренне ссылается на динамический класс, указанный в примерах LINQ (C:Program Файлы (x86) Microsoft Visual Studio 10.0 Samples 1033) от MSVS2010.

когда я передаю tablename, столбцы динамически, это происходит, но на стороне клиента при использовании этого метода выдается ошибка — сервер не предоставил значимого ответа; это может быть вызвано несоответствием контракта, преждевременным завершением сеанса или внутренней ошибкой сервера. выдает ли wcf проблему с типом возвращаемого значения iqueryable?

пожалуйста, предложите……

Комментарии:

1. Пожалуйста, опубликуйте все сообщение об ошибке, которое вы видите, включая сообщение об ошибке и трассировку стека. Это значительно облегчит понимание того, с какой проблемой вы столкнулись.

Ответ №1:

Вам следует изучить службы передачи данных WCF, они же службы OData

Комментарии:

1. Не удается преобразовать тип ‘DynamicClass1’ в тип ‘System. Объект’. LINQ для объектов поддерживает только приведение примитивных типов модели данных объектов.

Ответ №2:

Попробуйте вместо этого использовать returning ToList(), потому что Linq использует концепцию Deffer Loading, что означает, что когда на стороне клиента осуществляется доступ к ToList или Result, он пытается подключиться к серверу для получения результата, и это приводит к сбою. Рекомендуется, когда вы используете такой вид ORM, отсоединять свои объекты и отправлять результат клиенту.

Комментарии:

1. теперь я получаю ошибку как — Не удается преобразовать тип ‘DynamicClass1’ в тип ‘System. Объект’. LINQ для объектов поддерживает только приведение примитивных типов модели данных объектов.