EF 6过滤子集合

Mik*_*ike 11 c# entity-framework-6

我正在尝试将旧项目从Linq2Sql迁移到EF6,我遇到了以下问题.

这个项目是多语言的(即所有文本都有超过1个翻译),我有以下数据库结构:

数据库表的示例

获取所有使用当前语言ID筛选的所有LocalizedContent记录的ExampleEntity1对象的最佳方法是什么?

我可以使用以下代码加载所有带有所有LocalizedContent记录的ExampleEntity1对象: dc.ExampleEntity1.Include(ee => ee.TextEntry.LocalizedContents);

在Linq2Sql中我可以使用过滤LocalizedContent记录,loadOptions.AssociateWith但我找不到任何EF6的解决方案.

我看到了类似的旧问题(2 - 3年前发布),我只是想知道EF6是否有解决方案.这对我来说是一个非常关键的功能,因为我在项目中有几十个实体,我不想为每个选择查询创建自定义对象.

我还发现了EntityFramework.DynamicFilters nuget包可以帮助解决我的问题,但我更愿意使用"原生"EF6功能.

Eld*_*dho 2

请注意,当前无法过滤加载哪些相关实体。包含将始终引入所有相关实体。

MSDN 参考

var result = dc.ExampleEntity1.Include(ee =>ee.TextEntry.LocalizedContents)
               .Select(x=>new
               {
                  //Try anonymous or a projection to your model.
                  //As this Select is IQuerable Extension it will execute in the data store and only retrieve filtered data.
                  exampleEntity = x,
                  localizedContetnt = x.TextEntry.LocalizedContents.Where(g=>g.Id==YourKey),
               }).FirstOrDefault();   
Run Code Online (Sandbox Code Playgroud)

您可以尝试匿名投影来过滤包含实体中的内容

实体框架团队正在努力解决这个问题,您可以在这里投票

类似的答案