Linq与实体

时间:2012-11-09 19:02:44

标签: wcf linq silverlight entities

我开始使用带有wcf ria的silverlight 5来开发一个系统。我使用Visual Studio 2010,代码是visual basic。在我的应用程序中,我有一个表guiasidiomas。这是一个非常简单的表格:

  • 编号
  • Idguia
  • Ididioma

在应用程序中,我更改了域服务

生成的查询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()'方法,并且此方法无法转换为商店表达式。

2 个答案:

答案 0 :(得分:1)

Linq-to-Entities无法将.ToString()直接转换为SQL,因此您无法在WHERE子句中使用它。这有两个选择:

  1. idProcurado转换为与idGuia相同的数据类型并直接比较
  2. 从数据库中提取所有实体(例如,通过调用.AsEnumerable())并对对象列表进行比较。
  3. 我猜测1)只会通过回击一个或少数实体来提供更好的表现。

答案 1 :(得分:0)

正如您的错误消息所示,linq to entities不支持ToString。 在将linq与实体一起使用之前,您可以准备字符串列表。