如何在wcf中使用动态linq?

时间:2011-06-01 05:47:08

标签: wcf linq dynamic

我正在使用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)中给出的动态类。

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

请建议......

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

尝试使用返回ToList(),因为Linq使用Deffer Loading的概念,这意味着当客户端ToList或Result被访问时,它会尝试连接到Server以获取结果,这是它将失败的地方。建议您在使用此类ORM时分离对象并将结果发送给客户端。