我开始使用带有wcf ria的silverlight 5来开发一个系统。我使用Visual Studio 2010,代码是visual basic。在我的应用程序中,我有一个表guiasidiomas
。这是一个非常简单的表格:
在应用程序中,我更改了域服务
生成的查询getguiasidiomas
Public Function GetGuiasIdiomas(ByVal idProcurado As String) AsIQueryable(Of GuiasIdioma)
Return Me.ObjectContext.GuiasIdiomas.Where(Function(c) (c.idGuia).ToString = idProcurado)
End Function
我插入了一个地方,以便按给定的idguia进行过滤。 这是有问题的查询。 如果你能帮助我,我会非常感激。 当我运行查询时,我得到:
SCRIPT5022:Silverlight应用程序中的未处理错误 代码:4004
类别:ManagedRuntimeError
消息:System.ServiceModel.DomainServices.Client.DomainOperationException:查询“GetGuiasIdiomas”的加载操作失败。 LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为商店表达式。
答案 0 :(得分:1)
Linq-to-Entities无法将.ToString()
直接转换为SQL,因此您无法在WHERE
子句中使用它。这有两个选择:
idProcurado
转换为与idGuia
相同的数据类型并直接比较.AsEnumerable()
)并对对象列表进行比较。我猜测1)只会通过回击一个或少数实体来提供更好的表现。
答案 1 :(得分:0)
正如您的错误消息所示,linq to entities不支持ToString
。
在将linq与实体一起使用之前,您可以准备字符串列表。