1

是否可以在运行时指定 LINQ to Entities 查询的 DbSet?

例如,如果我有许多不同的 DbSet,它们具有诸如“IsExpired”之类的共同属性,我可以将 DbSet 传递到查询中吗?

所以,

Dim query = From o In db.Products Where o.IsExpired = True

看起来像,

Dim myDynamicName As String
myDynamicName = "Products"

Dim query = From o In db("myDynamicName") Where o.IsExpired = True
4

1 回答 1

1

使用流利的语法时,这不可能的原因变得更加清楚:

Dim query = db("myDynamicName").Where(Function(o) o.IsExpired)

该函数是一个

Function Func(Of In T, Out bool)

并且类型T是从IQueryable Of T它前面的那个推断出来的。(这是可能的,因为Where是扩展方法,所以 IQueryable 是它的第一个输入参数)。因此,编译器知道这o.IsExpired是一个有效的表达式。

这意味着db("myDynamicName")必须要么是专门键入的,但不是,或者您必须将类型提供给Where方法。但这正是您要规避的事情。

于 2012-11-23T21:05:07.077 回答