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

我得到了以下 sql 语句,我想使用带有 linq(lambda 表达式)的实体框架来实现。这是 SQL:


select *

from tbl_ExampleStoneCatalog 

join tbl_ExampleStoneCategory 

on tbl_ExampleStoneCatalog.fk_ESC = tbl_ExampleStoneCategory.pk_ESC 

join tbl_ExampleStones

on tbl_ExampleStoneCatalog.fk_ES = tbl_ExampleStones.pk_ES

join tbl_ExampleReviewStoneCatalog 

on tbl_ExampleStones.pk_ES = tbl_ExampleReviewStoneCatalog.fk_ES

where .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 表达式过滤嵌套查询吗?


小唯快跑啊
浏览 155回答 2
2回答

哔哔one

如果看起来像是多对多的关系。我总是觉得从这里的连接表开始最容易。var res = _tbl_B.Repository.Where(b => b.c.Value == "whatever" && b.a.Value == "whatever").Select(b => b.a);
打开App,查看更多内容
随时随地看视频慕课网APP