如何从iqueryable中提取方法并应用于新的上下文

时间:2017-06-19 13:01:43

标签: entity-framework reflection dispose

我有一个带有以下属性的子ListBox

Property Query As Func(Of IEnumerable)

这个我喜欢这样使用

MyListBox.Query=Function() MyDBContext.Products

MyListBox.Query=Function() MyDBContext.Clients.Where(function(x) x.Age>25)

我现在看到我全身使用Query属性的方式,从不处理MyDBContext,因为我没有使用Using

所以问题是:

我的ListBox中是否有一种方法只能获取func的函数部分(即.Clients.Where(function(x) x.Age>25)并将其应用于我将在MyListBox内部使用和处理的不同dbcontext?

非常感谢

1 个答案:

答案 0 :(得分:0)

我不熟悉"查询"列表框上的属性,这是一个自定义的Listbox扩展吗?在任何情况下,如果您想要使用DbContext中的数据进行一次性控制,而不打开DbContext引用,那么:

MyListBox.Query=Function() MyDBContext.Clients.Where(function(x) x.Age>25).ToList()

应该这样做。

但是,如果您的控件能够进行相对智能的分页滚动等处理大数据量,那么您可能希望将该DbContext引用构建到列表框控件代码中,在这种情况下,您可以使用#39 ; d用于识别DbSet和Where子句以从中检索其数据。这可能需要一些反射来传递DbSet属性名称,然后针对List的DbContext重新解析它,然后将其提供给Where表达式。 (可能比你需要的更复杂。:))