我使用linq-to实体来动态检索数据,并创建了一个方法,如下所示:
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、columns时,它是动态的,但在客户端,当使用该方法时,它会出错——服务器没有提供有意义的回复;这可能是由于合约不匹配、会话提前关闭或内部服务器错误造成的。wcf是否给出了iquryable返回类型的问题?
请建议。。。。。。
您应该研究WCF数据服务,也称为oData Services
尝试使用返回ToList(),因为Linq使用了Deffer Loading的概念,这意味着当在客户端访问ToList或Result时,它会尝试连接到服务器以获取结果,而这正是它失败的地方。当您使用这种ORM时,建议您分离对象并将结果发送到客户端。