我创建了一个 Visual Basic WPF 应用程序项目,其中包含 Toy.edmx,这是一个从名为 Toy 的数据库生成的 ADO.NET 实体数据模型。
Its Window1.xaml.vb文件看起来像这样:
1 Class Window1
2
3 Private Sub Window1_Loaded( _
4 ByVal sender As System.Object, _
5 ByVal e As System.Windows.RoutedEventArgs) _
6 Handles MyBase.Loaded
7
8 Dim dc As New ToyEntities1
9 Label1.Content = (From c As Client In dc.ClientSet _
10 Select c).First.FirstName
11
12 End Sub
13
14 End Class
运行得很好。
但是,如果我添加文件客户端.vb...
1 Partial Public Class Client
2 Function IsWashington() As Boolean
3 Return Me.LastName = "Washington"
4 End Function
5 End Class
...并将 WHERE 子句添加到我的Window1.xaml.vb询问...
9 Label1.Content = (From c As Client In dc.ClientSet _
10 Where c.IsWashington _
11 Select c).First.FirstName
...然后我得到这个 NotSupportedException:
LINQ to Entities 无法识别“Boolean IsWashington()”方法,并且该方法无法转换为存储表达式。
如何使用分部类扩展 ADO.NET 实体框架对象?
这就是您想要做的 - 创建一个将过滤器应用于客户端查询的方法。
我不懂vb.net,所以不要100%相信这个徒手代码。
Partial Public Class Client
Public Shared Function IsWashington(query As IQueryable(Of Client)) As IQueryable(Of Client)
Return query.Where(Function(someClient) someClient.LastName = "Washington")
End Function
End Class
后来,一些调用代码。
IQueryable(Of Client) someQuery = dc.ClientSet.AsQueryable
someQuery = Client.IsWashington(someQuery)
Label1.Content = someQuery.First.FirstName
希望这有效!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)