为了账号安全,请及时绑定邮箱和手机立即绑定

EF 如何使用 .include() 和使用存储库模式查询更多实体

EF 如何使用 .include() 和使用存储库模式查询更多实体

C#
小唯快跑啊 2021-10-31 19:27:56
我得到了以下 sql 语句,我想使用带有 linq(lambda 表达式)的实体框架来实现。这是 SQL:select *from tbl_ExampleStoneCatalog join tbl_ExampleStoneCategory on tbl_ExampleStoneCatalog.fk_ESC = tbl_ExampleStoneCategory.pk_ESC join tbl_ExampleStoneson tbl_ExampleStoneCatalog.fk_ES = tbl_ExampleStones.pk_ESjoin tbl_ExampleReviewStoneCatalog on tbl_ExampleStones.pk_ES = tbl_ExampleReviewStoneCatalog.fk_ESwhere .fk_StoneCategory = '%someParameter%'我尝试使用 .include() 这让我想到了这个:var res = (await this._exampleStoneCatalog.Query()          .include(esc => esc.ExampleStoneCategory)          .include(es => es.ExampleStones)          .include(es => es.ExampleStones.ExampleReviewStoneCatalog))          .Where(w => w.ExampleStones.ExampleReviewStoneCatalog.Any(           a => a.StoneCategoryID.Equals(%someParameter%)));不幸的是,上面提到的代码不会给我带来想要的结果。此外,其中有一个嵌套的Where条件 => ExampleStones.ExampleReviewStoneCatalog.StoneCategoryID。根据我经过一些研究后的理解,使用 .include() 无法轻松解决此问题。还有其他方法可以使用 lambda 表达式过滤嵌套查询吗?
查看完整描述

2 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

如果看起来像是多对多的关系。我总是觉得从这里的连接表开始最容易。

var res = _tbl_B.Repository.Where(b => b.c.Value == "whatever" && b.a.Value == "whatever").Select(b => b.a);



查看完整回答
反对 回复 2021-10-31
  • 2 回答
  • 0 关注
  • 135 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信