1

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

  • ID
  • 伊德吉亚
  • 成语

在应用程序中,我更改getguiasidiomas了域服务生成的查询

Public Function GetGuiasIdiomas(ByVal idProcurado As String) AsIQueryable(Of GuiasIdioma)
    Return Me.ObjectContext.GuiasIdiomas.Where(Function(c) (c.idGuia).ToString = idProcurado)
End Function

我插入了一个 where 以便按给定的 idguia 进行过滤。那就是有问题的查询。如果你能帮助我,我将不胜感激。当我运行查询时,我得到:

SCRIPT5022:Silverlight 应用程序代码中未处理的错误:4004
类别:ManagedRuntimeError
消息:System.ServiceModel.DomainServices.Client.DomainOperationException:查询“GetGuiasIdiomas”的加载操作失败。LINQ to Entities 无法识别方法“System.String ToString()”方法,并且该方法无法转换为存储表达式。

4

2 回答 2

1

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

  1. 转换idProcurado为相同的数据类型idGuia并直接比较
  2. 从数据库中提取所有实体(例如通过调用.AsEnumerable())并与对象列表进行比较。

我猜 1) 将通过仅拉回一个或少数实体来为您提供更好的性能。

于 2012-11-09T19:12:18.410 回答
0

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

于 2012-11-09T19:07:13.073 回答