EF(Entity Framework)多对多关系下用LINQ实现"NOT IN"查询

时间:2022-11-12 19:30:16

这是今天在实际开发中遇到的一个问题,需求是查询未分类的博文列表(未加入任何分类的博文),之前是通过存储过程实现的,今天用EF实现了,在这篇博文中记录一下。

博文的实体类BlogPost是这样定义的:

public class BlogPost
{
public int Id { get; set; } public string Title { get; set; } //.... public ICollection<BlogCategory> Categories { get; set; }
}

分类的实体类BlogCategory是这样定义的:

public class BlogCategory
{
public int CategoryId { get; set; } public string Title { get; set; } //... public ICollection<BlogPost> Posts { get; set; }
}

EF(Entity Framework)中多对多关系是这样定义的:

modelBuilder.Entity<BlogPost>()
.HasMany(p => p.Categories)
.WithMany(c => c.Posts)
.Map(link =>
{
link.MapLeftKey("PostId");
link.MapRightKey("CategoryId");
link.ToTable("blog_links");
});

BlogPost与BlogCategory是多对多关系,现在的需求是查询与BlogCategory没有关系的BlogPost,这个LINQ查询代码该如何写呢?

。。。

今天太忙,没时间写更多文字了,直接上代码吧:

.Where(p => !p.Categories.Any(c => c.Posts.Select(cp => cp.Id).Contains(p.Id)));

EF(Entity Framework)多对多关系下用LINQ实现"NOT IN"查询的更多相关文章

  1. Entity Framework Many to Many Relation Mapping(Entity Framework多对多关系映射)

    通常我们在做数据库设计时都会有两张表是多对多关系的时候,在数据库做多对多关系时候我们通常通过中间关联表来处理,那我们现在在EF中是如何处理的呢? 假设我们有如下关系,用户(User)包含多个角色(Ro ...

  2. 【极力分享】&lbrack;C&num;&sol;&period;NET&rsqb;Entity Framework&lpar;EF&rpar; Code First 多对多关系的实体增,删,改,查操作全程详细示例【转载自https&colon;&sol;&sol;segmentfault&period;com&sol;a&sol;1190000004152660】

      [C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例 本文我们来学习一下在Entity Framework中使用Cont ...

  3. &lbrack;C&num;&sol;&period;NET&rsqb;Entity Framework&lpar;EF&rpar; Code First 多对多关系的实体增,删,改,查操作全程详细示例

    本文我们来学习一下在Entity Framework中使用Context删除多对多关系的实体是如何来实现的.我们将以一个具体的控制台小实例来了解和学习整个实现Entity Framework 多对多关 ...

  4. &lbrack;转&rsqb;Entity Framework 的实体关系

    通过 Entiy Framework实践系列 文章,理了理 Entity Framework 的实体关系. 为什么要写文章来理清这些关系?“血”的教训啊,刚开始使用 Entity Framework  ...

  5. &lbrack;转载&rsqb;灵动思绪EF&lpar;Entity FrameWork&rpar;

    很久之前就想写这篇文章了,但是由于种种原因,没有将自己学习的EF知识整理成一片文章.今天我就用CodeFirst和ModelFirst两种方式的简单案例将自己学习的EF知识做个总结. 在讲解EF之前, ...

  6. EF&lpar;Entity Framework&rpar;通用DBHelper通用类&comma;增删改查以及列表

    其中 通用类名:DBhelper 实体类:UserInfo 1 //新增 2 DBHelper<UserInfo> dbhelper = new DBHelper<UserInfo& ...

  7. 【转】Entity Framework技术系列之7:LINQ to Entities

    前言 LINQ(Language Integrated Query,语言集成查询)是一组用于C#和VB.NET语言的扩展,它允许编写C#或者VB.NET代码,以与查询数据库相同的方式操作内存数据. L ...

  8. Entity Framework多对多关联映射的实现

    Entity Framework是微软官方提供的一个ORM解决方案,它有纯正的血统,比NHibernate更容易使用并且与现有其它官方框架配合更加密切. 时代不断的在发展变化,记得10年前还是ADO( ...

  9. ADO&period;NET Entity Framework 在哪些场景下使用?

    在知乎回答了下,顺手转回来. Enity Framework已经是.NET下最主要的ORM了.而ORM从一个Mapping的概念开始,到现在已经得到了一定的升华,特别是EF等对ORM框架面向对象能力的 ...

随机推荐

  1. Hibernate&lowbar;增删改

    package com.etc.test;import java.util.List;import org.hibernate.Session;import org.hibernate.Session ...

  2. &period;NET开发工具之Excel导出公共类

    来源:Pino晨 链接:cnblogs.com/chenxygx/p/5954870.html 说明 最近接了一个任务,就是做一个列表的Excel导出功能.并且有很多页面都会使用这个功能. 导出的Ex ...

  3. CSDN 自动评论

    转载说明 本篇文章可能已经更新,最新文章请转:http://www.sollyu.com/csdn-auto-reviews/ 说明 当打开http://download.csdn.net/my/do ...

  4. JAVA Metrics 度量工具使用介绍

    转载: http://blog.csdn.net/scutshuxue/article/details/8350135 http://koven2049.iteye.com/blog/968143 h ...

  5. memcached 实验论文

    虽然在这个年龄段谈话memcached 它可能是一个有点晚,最为cached 在应用程序中redis 在之上,下面将谈谈自己的一些看法, 这个文件是不是memcached 理论描述,只写的实验数据和结 ...

  6. 大数据下的数据分析平台架构zz

    转自http://www.cnblogs.com/end/archive/2012/02/05/2339152.html 随着互联网.移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海 ...

  7. Ball HDU - 4811

    Jenny likes balls. He has some balls and he wants to arrange them in a row on the table. Each of tho ...

  8. Dart 创建List

    list的常用的操作 1. [] ,length  获取元素,和数组长度 2. add(), insert ()添加元素 3. remove(),clear() 删除元素 4.indexOf (), ...

  9. 写入多线程Log4net 多线程写入

    问题描述: 系统经常出现log无缘无故的丧失,每次系统出问题时去查log时发明log没有,愁闷了许久. 今天搞了将近一天,终于搞定. 处理步骤: 写了个控制台程序,在while(true)里头调用lo ...

  10. python里面的数学

    一.基本运算符 1.算数运算 2.比较运算 特殊情况:!= 不等于 新版本不支持 <> 不等号 3.赋值运算 4.逻辑运算 not : 非   非真即假,非假即真.   - and : 并 ...