c# - 在不加载数据的情况下从 EF 6 中的多对多集合中删除项目
问题描述
我使用实体框架 6,我有一个问题。是否存在一些选项可以在不加载数据的情况下从多对多集合中删除项目?我已经尝试了一些技巧,我在 stackoverflow 上找到了这些技巧,但没有任何东西适用于 EF 6(我尝试过附加、禁用延迟加载和实体框架加库)。
例如我有模型(代码优先):
public class Book
{
public string Name { get; set; }
public virtual ICollection<Category> Categories{ get; set; }
}
public class Category
{
public string Name { get; set; }
public virtual ICollection<Book> Books{ get; set; }
}
现在我可以添加和删除项目:
var book = dbContext.Books.Find(1);
var actionCategory = dbContext.Categories.Find(5);
book.Categories.Add(actionCategory); // or book.Categories.Remove(actionCategory);
dbContext.SaveChanges();
问题是,由于延迟加载,因此 book.Categories 项是从数据库加载的。在这部分代码中我不需要加载任何数据,我只需要添加或删除一项。只有 DELETE 或 INSERT 没有任何 SELECT 的 sql 查询。
EF 6 中是否存在任何选项,如何在不加载所有相关数据的情况下插入或删除集合中的一项?
感谢您的帮助和任何有用的示例。
解决方案
推荐阅读
- r - dplyr:如何按列 B 的条件对分组的列 A 求和,并在没有 NA 的情况下变异为列 sum_A
- javascript - 更改 Location 标头时 NodeJs 不重定向
- python - 为什么我的 alpha-beta 搜索的结果取决于访问节点的顺序?
- docker - 使 docker 容器只能从某个 IP 访问
- javascript - 令牌过期时如何使用 react-router-dom 重定向用户?
- sql - 查找产品的最大数量
- javascript - 错误:渲染的钩子比预期的少。这可能是意外提前退货声明造成的?反应
- python - 无法使用 selenium 单击链接按钮会导致错误元素未找到异常
- variables - Ansible无法将变量值分配给另一个变量
- php - Laravel 8尝试使用标签输入时未识别方法“tag()”