2017-06-19 31 views
0

我有一个子类ListBox具有以下属性:如何从IQueryable的提取方法,并应用到新的上下文

Property Query As Func(Of IEnumerable) 

这个我用遍这样

MyListBox.Query=Function() MyDBContext.Products 

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

etc

我现在看到的这样,我在所有使用Query财产,从来没有处置的MyDBContext的,因为我没有使用Using

所以问题是:

有没有办法在我的列表框中只抓取func的功能部分(即.Clients.Where(function(x) x.Age>25)并将其应用于不同的dbcontext,我将在MyListBox内部使用和处理内部?

非常感谢您

+0

声明属性类型为'Func '(不知道它是如何转换为VB,但你明白了)? –

+0

@IvanStoev在VB中,它是'Func(DbContext,IEnumerable)'。 –

+0

这里不一定有'IQueryable';该属性需要一个'Func',它返回一个'IEnumerable'。 –

回答

0

我不熟悉,在列表框“查询”属性,这是一个自定义列表框扩展?在任何情况下,如果你想用从数据的DbContext无需离开的DbContext参考打开,然后控制的一次性人群:

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

应该做的伎俩。然而,如果你的控件能够进行相对智能的分页滚动等处理大量数据,那么你可能想要将DbContext引用构建到你的列表框控件代码中,在这种情况下,你要使用的函数签名将是确定DbSet和Where子句从中检索其数据。这可能需要一些反射才能传入DbSet属性名称,然后重新解析该列表的DbContext,然后将它提供给Where表达式。 (可能比你需要的更复杂:))

相关问题