EF(Entity Framework)多对多关系下用LINQ实现"NOT IN"查询
2024-08-23 11:56:48
这是今天在实际开发中遇到的一个问题,需求是查询未分类的博文列表(未加入任何分类的博文),之前是通过存储过程实现的,今天用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)));
最新文章
- 飞机大战编写以及Java的面向对象总结
- asp.net MVC控制器中返回JSON格式的数据时提示下载
- phpmyadmin Wrong permissions on configuration file, should not be world writable!
- Android SDK Manager无法更新的解决
- openurl 跳转
- css3 进度条
- SAFS Distilled --- 9 April 2015 to 16 April 2015
- MVC 读书笔记
- 关于js的兼容问题(小办法)!
- bzoj 1576: [Usaco2009 Jan]安全路经Travel 树链剖分
- 开始lisp的旅程
- POJ 2699 战斗小王子
- 简化日常工作之三:自己写一个CI脚手架
- mysql索引类型和索引方法
- ACM-ICPC 2018 南京赛区网络预赛(A, J)
- sping入门
- day03 变量 运算符 基本数据类型 输出功能 格式化输出
- 不同路由器下远程ssh登录Beaglebone系统(通过路由器端口转发,配合花生壳的DDNS功能)
- day32-常见内置模块一(random、time、datetime、os、sys)
- python 进程、线程、协程感悟