我有几张桌子和一个视图:
表:
- aspnet_Roles
(使用RoleId和其他列)
- Status
(使用StatusId和其他列)
- RoleStatus
(具有RoleId和StatusId及关系)
当我创建Linq To Entities EDMX文件时,它会创建2个实体,Status
中的aspnet_Roles
列表属性和aspnet_Roles
中的Status
列表。
到目前为止确定。
但现在我有一个StatusId
列的视图。
我想要的是创建一个LINQ查询,在该视图与aspnet_Roles
表之间使用连接,以在结果集中添加RoleName
列。
在SQL中它将类似于:
Select a.*, aspnet_Roles.RoleName From SearchView a
INNER JOIN RoleStatus ON a.StatusId = RoleStatus.StatusId
INNER JOIN aspnet_Roles ON RoleStatus.RoleId = aspnet_Roles.RoleId
但我无法在LINQ to Entities中找到如何做到这一点。
问题是我永远无法访问RoleId
或StatusId
,因为这些字段已被aspnet_Roles
和Status
列表属性“替换”。
所以我得到了这样的LINQ:
from avis in ctx.SearchView
join joinedRoles in ctx.aspnet_Roles
on avis.StatusId equals joinedRoles.Status. (and then what ??)
由于状态是一个列表,我找不到与StatusId
匹配的内容。
我认为我做错了但我不知道在哪里。
答案 0 :(得分:1)
首先,我建议升级到EF4;他们添加了“外键关联”,因此我们现在除了引用之外还有* Id字段。
其次,您的视图是否映射到设计器中的实体?应该可以在视图和状态表之间添加关联。 (我实际上并没有这样做,但我相信这会有效。)