【问题标题】:How to use dyanamic linq in wcf?如何在 wcf 中使用动态 linq?
【发布时间】:2011-09-06 00:16:35
【问题描述】:

我正在使用 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 服务中的此方法在内部引用 MSVS2010 的 LINQ 示例 (C:\Program Files (x86)\Microsoft Visual Studio 10.0\Samples\1033) 中给出的动态类。

当我传递表名时,它会动态传递列,但在客户端,在使用该方法时它会给出错误 - 服务器没有提供有意义的回复;这可能是由于合同不匹配、会话过早关闭或内部服务器错误造成的。 wcf 是否给出 iqueryable 返回类型的问题?

请建议......

【问题讨论】:

  • 请发布您看到的整个错误消息,包括错误消息和堆栈跟踪。这将使您更容易理解您遇到的问题。

标签: wcf linq dynamic


【解决方案1】:

您应该查看 WCF 数据服务,即 oData 服务

【讨论】:

  • 无法将类型“DynamicClass1”转换为类型“System.Object”。 LINQ to Entities 仅支持转换实体数据模型原语类型。
【解决方案2】:

尝试使用返回 ToList() 代替,因为 Linq 使用延迟加载的概念,这意味着当在客户端访问 ToList 或 Result 时,它会尝试连接到服务器以获取结果,并且它会失败。建议您在使用此类 ORM 时分离对象并将结果发送给客户端。

【讨论】:

  • 现在我遇到错误 - 无法将类型“DynamicClass1”转换为类型“System.Object”。 LINQ to Entities 仅支持转换实体数据模型原语类型。
猜你喜欢
  • 1970-01-01
  • 2011-10-27
  • 1970-01-01
  • 2016-12-11
  • 2014-08-19
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多