【发布时间】:2011-02-21 12:50:43
【问题描述】:
我有一个使用 EF4 连接到 SQL Server 数据库的 asp.net C# 应用程序。
在数据库中,Officer 和 Geography 这两个表之间存在多对多关系,因此存在另一个名为 OfficerGeography 的表将两者连接起来。
使用这个用于创建 edmx 图的数据库,EF4 可以正确地看到这两个表之间的多对多关系。
问题
我有一个 List<int> 的 geographyIds,它对应于 Geography 表的主键。
我希望使用此列表来检索具有出现在此列表中的 geographyId 的官员。我认为以下 LINQ 会起作用:
var geographyIds = new List<int>() { 1, 2, 3, 4, 5 };
var officers = db.Officers.Where(o => o.Enabled == true && geographyIds.Contains(o.Geographies.GeographyId));
但是这失败了。事实上,intellisense 不会列出 o.Geographies 的任何列(因为多对多关系)。
如何检索与 GeographyId 匹配的军官列表?
补充说明OfficerGeography 数据库表在 EF4 中不会作为它自己的实体出现。 EF4 正确地只看到 Officer 和 Geography,在两个实体上都具有从一个到另一个的导航属性。
【问题讨论】:
-
您在 edmx 上有
OfficerGeography实体吗?
标签: c# entity-framework-4 linq-to-entities contains