问题: https://q.cnblogs.com/q/98333/

Msg表(Id,Content,IsDel)。内有 virtual ICollection<MsgDetail> MsgDetails属性

MsgDetail表(Id,MsgId,SubContent,IsDel)

两者是一对多关系。

如何进行如下意思的的筛选?

若写这句伪代码:

context.Msg.First(t=>t.Id==1).Include(t=>t.MsgDetail.Where(t=>t.IsDel == false))  //仅筛选IsDel==false的MsgDetails记录。

其中Include(t=>t.MsgDetail.Where(t=>t.IsDel == false))  将报错

只能.Include(t=>t.MsgDetail)  后再次linq to object筛选

解决:

下面以Blog~Comments 的一对多关系为例解释、书写代码。

db.Configuration.LazyLoadingEnabled = false;  //必须关闭延迟加载,否则一旦使用Blog.Comments就会再次查询DB的Comments表,加载Blog下的所以Comments而不筛选IsDel。
Blog blog = db.Blog.Include(b => b.Comments)
.Select(b => new {BlogEntity = b, Comments = b.Comments.Where(c => c.IsDel == false)})
.Where(blogEntity => blogEntity.BlogEntity.Id == id)
.ToList() //立即执行sql查询
.Select(t => t.BlogEntity).First(); //linq to object内存查询、ef自动转换Comments到BlogEntity.Comments

//方法2
//var ret = db.Blog.Include(b => b.Comments)
// .Select(b => new {BlogEntity = b, Comments = b.Comments.Where(c => c.IsDel == false)})
// .FirstOrDefault(blogEntity => blogEntity.BlogEntity.Id == id); //FirstOrDefault
//Blog blog = ret == null ? null : ret.BlogEntity;

参考:http://www.bkjia.com/Asp_Netjc/970649.html

http://stackoverflow.com/questions/25276978/ef-6-add-where-clause-to-an-include-with-navigation-property

Entity Framework 6如何进行导航属性的筛选(context.Msg.First(t=>t.Id==1).Include(t=>t.MsgDetail),筛选MsgDetail)

0
[待解决问题] 浏览: 16次 

Msg表(Id,Content,IsDel)。内有 virtual ICollection<MsgDetail> MsgDetails属性

MsgDetail表(Id,MsgId,SubContent,IsDel)

两者是一对多关系。

如何进行如下意思的的筛选?

context.Msg.First(t=>t.Id==1).Include(t=>t.MsgDetail.Where(t=>t.IsDel == false))  //仅筛选IsDel==false的MsgDetails记录。

上述代码 : .Include(t=>t.MsgDetail.Where(t=>t.IsDel == false))  错误

只能.Include(t=>t.MsgDetail.Where(t=>t.IsDel == false)

何解?

Entity Framework 6如何进行导航属性的筛选(context.Msg.First(t=>t.Id==1).Include(t=>t.MsgDetail),筛选MsgDetail带条件)的更多相关文章

  1. 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制

    你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...

  2. Entity Framework Core: A second operation started on this context before a previous operation completed

    我这边报错是因为函数声明的是async  void 而实现中有多个task任务,导致的线程不安全

  3. Entity Framework + WCF 远程调用出错

            在使用Entity Framework中使用WCF,在程序中调用服务一直报错,我一直以为是WCF的哪个地方的配置有问题,找来找去,一直没有解决.         最后在网上找到一篇文章 ...

  4. Getting Started with Entity Framework 6 Code First using MVC 5--Contoso 大学

    在本教程中使用的软件版本 Visual Studio 2013 年 4.5.NET 实体框架 (EntityFramework 6.1.0 NuGet 包) 6 Windows Azure SDK 2 ...

  5. Entity Framework之犹豫不决

    记得去年初就开始关注Entity Framework,那时只是简单测试了一下,发现较之Nhibernate不太成熟.当时的EF主要表驱动方式开发,过度依赖edm文件,并且数据层耦合了模型层,让一些MV ...

  6. Code First :使用Entity. Framework编程(8) ----转发 收藏

    第8章 Code First将走向哪里? So far, this book has covered all of the Code First components that reached the ...

  7. Entity Framework技巧系列之十二 - Tip 46 - 50

    提示46. 怎样使用Code-Only排除一个属性  这次是一个真正简单的问题,由StackOverflow上这个问题引出.  问题:  当我们使用Code-Only把一个类的信息告诉Entity F ...

  8. Entity Framework关联查询以及数据加载(延迟加载,预加载)

    数据加载分为延迟加载和预加载 EF的关联实体加载有三种方式:Lazy Loading,Eager Loading,Explicit Loading,其中Lazy Loading和Explicit Lo ...

  9. EntityFramework_MVC4中EF5 新手入门教程之五 ---5.通过 Entity Framework 读取相关数据

    在前面的教程中,您完成School数据模型.在本教程中,您会读取和显示相关的数据 — — 那就是,实体框架将加载到导航属性的数据. 下面的插图显示页面,您将完成的工作. 延迟. 预先,和显式加载的相关 ...

随机推荐

  1. Shell函数的7种用法介绍

    1. 在shell文件内部定义函数并引用: 复制代码代码如下: [~/shell/function]# cat factorial.sh #!/bin/bashfunction factorial{f ...

  2. 当 Visual Studio 扩展遇到错误时

    我是遇到了 Github 扩展经常在 Visual Studio 启动时报错,找了一下可以尝试以下方法: 首先卸载插件 然后删除 %LocalAppData%\Microsoft\VisualStud ...

  3. react-无状态组件

    import React, { Component } from "react"; //import PostItem from "./PostItem"; / ...

  4. flutter 环境安装以及配置

    首先需要下载flutter源码,以下是github地址: https://github.com/flutter/flutter 然后需要安装git环境吧,下图红框可以自行下载安装 接下来需要安装flu ...

  5. JAVA(六)数据库/网络编程/新IO

    成鹏致远 | lcw.cnblog.com |2014-02-05 数据库 1.JDBC概述 JDBC(Java Database Connectivity,Java数据库连接)提供了一种与平台无关的 ...

  6. GNU make使用(二)

    [时间:2017-06] [状态:Open] [关键词:makefile,gcc,编译,shell命令,目标文件] 0 引言及目标 之前使用Makefile都是把源文件和目标文件放到同一个目录编译.近 ...

  7. Unsafe 学习和源码阅读

    在代码中获取 Unsafe 对象的方法: // 在 AtomicInteger 里面是这么用的private static final Unsafe unsafe = Unsafe.getUnsafe ...

  8. java.util.concurrent介绍【转】

    java.util.concurrent介绍   java.util.concurrent 包含许多线程安全.测试良好.高性能的并发构建块.不客气地说,创建 java.util.concurrent ...

  9. Java知多少(59)创建多线程

    到目前为止,我们仅用到两个线程:主线程和一个子线程.然而,你的程序可以创建所需的更多线程.例如,下面的程序创建了三个子线程: // Create multiple threads. class New ...

  10. doT.js模板和pagination分页应用

    doT.js模板和pagination分页应用 博客中模拟了数据加载初始化的过程.doT.js渲染每一项内容的数据项.示例如下: <script id="Messtmpl" ...