实体框架 - 如何使用已连接的实体返回强类型IQueryable

时间:2017-04-04 23:40:16

标签: vb.net entity-framework linq linq-to-entities

在我的数据库模式中,我有一个用户基表,加入了用于特定用户类别的各种其他表。

我有一个像这样的EF查询...

Dim query = From u In DBContext.Users
            Join a In DBContext.Advertiser On u.UserID Equals a.UserID

这会创建一个匿名类型的IQueryable,包括包含实体的键'u'和'a'。

我希望能够做到的是,以某种方式改变这将返回一个强类型的IQueryable,但我不知道该怎么做。

我尝试过创建一个类似的课程......

Class MyAdvertiser
    Public u As User
    Public a As Advertiser
End Class

然后像这样声明查询......

Dim query As IQueryable(Of MyAdvertiser) = ...

但是它告诉我它无法转换为MyAdvertiser,因为匿名类型不是从MyAdvertiser派生的。

我可能错过了一些非常明显的东西。我在EntityFramework和linq上还是比较新的。

1 个答案:

答案 0 :(得分:1)

您只需要使用Linq Select进行投影。只需在查询末尾添加即可。例如:

Dim query = From u In DBContext.Users
            Join a In DBContext.Advertiser On u.UserID Equals a.UserID
            Select New MyAdvertiser With { .u = u, .a = a }