【问题标题】:Select joined tables in EF在 EF 中选择连接表
【发布时间】:2012-02-06 14:42:39
【问题描述】:

我有一张桌子:

Shop (ShopID, ShopName)

还有一张桌子

Campaign (CampaignID, CampaignName)

具有多对多关系。实体框架为我创建了一个带有(ShopID, CampaignID) 的连接表CampaignShop。但是该表没有被 EF 公开,我不能在 LINQ 语句中使用它。

如何查询给定campaignID的所有店铺?

如果我尝试

dbContext.MerchantShop
    .Where(c => c.Campaign.CampaignID == campaignID)

Campaign.CampaignID 不工作。

【问题讨论】:

  • 你得到什么错误?还是您没有看到任何结果?
  • 听起来很奇怪。因为当它纯粹是一对表时(对于多对多关系),它应该转换为 Shop(.Campaigns) 和 Campaign(.Shops) 的导航属性。您是否在实体模型的生成中包含外键?
  • 你需要 dbContext.MerchantShop.Include("Campaign").Where(c => c.Campaign.CampaignID ==campaignID)

标签: c# linq entity-framework


【解决方案1】:

使用Any 扩展方法。

 dbContext.MerchantShop
    .Where(s => s.Campaign.Any(c => c.CampaignID == campaignID));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 2011-07-03
    相关资源
    最近更新 更多