【问题标题】:Entity Framework include items only by condition [duplicate]实体框架仅按条件包含项目[重复]
【发布时间】:2016-06-26 06:36:41
【问题描述】:

我需要我的上下文通过条件包含sonns,我需要未删除的行(逻辑删除)。

我知道我不能在包含中添加条件;所以我想过滤上下文,但它不起作用。

var aa = ctx.aa
         .Include(t => t.vari)
         .ToList()
         .FirstOrDefault();

ctx.vari.Where(bi => bi.ID == 10 && bi.Deleted == 1).ToList();

谢谢!

【问题讨论】:

  • ctx.vari.Where(bi => bi.ID == 10 && bi.Deleted == 1).ToList(); 您错过了 ID 的 bi。否则你能提到你遇到的错误吗?
  • 你是对的! (我认为这个问题的想法很清楚,尽管有错误......)
  • 很高兴听到。然后你可以投票支持我的评论。 ;)

标签: c# entity-framework-5


【解决方案1】:

正如 codelahiru && hbulens 指出的那样,您错过了 ID 的 bi。

免责声明:我是项目的所有者Entity Framework Plus

Query IncludeOptimized 功能允许使用 include 过滤并同时优化查询性能(支持 EF5、EF6)

var aa = ctx.aa
            .IncludeOptimized(t => t.vari.Where(bi => bi.ID == 10 && bi.Deleted == 1))
            .FirstOrDefault();

文档:EF+ Query IncludeOptimized

【讨论】:

  • 看起来很漂亮!!但我不能拥有 EF Plus :(
  • 您不能使用第三方库有什么原因吗?该代码是免费和开源的,因此如果您愿意,可以从 GitHub 获取源代码或与我联系,我将向您发送一个仅包含 EF+ Query IncludeOptimized 源代码的 zip 文件。
  • 谢谢你这么好。我会问我的老板
【解决方案2】:

这不会是最高效的查询。最好去掉 ToList()

 var aa = ctx.aa.Include(t => t.vari).ToList().FirstOrDefault(); 

 // You missed the variable before ID
 ctx.vari.Where(bi => bi.ID == 10 && bi.Deleted == 1).ToList();

【讨论】:

  • 正是我所做的......
  • 请编辑更多信息。不鼓励使用纯代码和“试试这个”的答案,因为它们不包含可搜索的内容,也没有解释为什么有人应该“试试这个”。我们在这里努力成为知识的资源。
  • @abarisone 通常我会同意你的看法,但问题的范围很小,几乎不需要解释(这只是一个错字imo)。
  • 哦!我做到了,我需要过滤没有 .include 句子的上下文。我认为包括 sosns,我只需要“触摸”它们....谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-02-15
  • 1970-01-01
  • 2023-03-08
相关资源
最近更新 更多