首页 > 解决方案 > 在不加载数据的情况下从 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 中是否存在任何选项,如何在不加载所有相关数据的情况下插入或删除集合中的一项?

感谢您的帮助和任何有用的示例。

标签: c#entity-framework

解决方案


推荐阅读