【发布时间】:2009-02-20 14:44:04
【问题描述】:
我刚开始使用 LINQ to Entities,我正在尝试将我们当前在存储过程中执行的搜索复制为 LINQ to Entities 查询。但是,我似乎无法找出正确的方法来查询距查询起点多于一个“连接”的实体的属性。
例如,假设我有表 Campaign、CampaignLocation 和 Location,它们具有从 Campaign 到 CampaignLocation 以及从 CampaignLocation 到 Location 的外键。非常标准的多对多表配置。当我开始像这样编写 LINQ 查询时:
var campaigns = from c in context.Campaign.CampaignLocation
这是我所能到达的关联链中的尽头。 “CampaignLocation”上似乎没有可用的“Location”属性,因此我可以过滤 Location 的属性。
我尝试使用这样的 LINQ 连接语法:
var campaigns = from c in context.Campaign
join cl in context.CampaignLocation
on c.CampaignID equals cl.CampaignID
但“cl”别名上似乎没有“CampaignID”属性。这真的很奇怪,桌子上有一个名为那个的列。因为它是 Campaign 表的外键,所以它不在模型对象上吗?
我在哪里出错了,我错过了什么?
[更新]
看起来我用于外键的任何整数列都没有被添加为模型对象的属性。显示了外键关系,但不存在 ID 属性。当我从数据库中读取架构时,有什么方法可以让设计人员将这些属性添加到模型中?
【问题讨论】:
-
我不知道如何防止它消耗作为导航属性的关系,我会做一些测试和研究,看看我是否能提供答案。
-
即使我能弄清楚如何使用导航属性一直到“位置”,我也很好。我仍然觉得我在这里错过了大部分图片。
标签: linq entity-framework