如何在不加载实体框架中的相关实体的情况下删除所有多对多关系?

时间:2012-06-15 07:08:49

标签: entity-framework-4 ef-code-first many-to-many

我有db方案,其中Product表与Color表有很多关系。我正在使用EF并创建POCO对象:

public class Product
{ 
    public Guid Id {get;set;}
    public ICollection<Color> Colors {get;set;}
}

public class Color
{
    public Guid Id {get;set;}
    public ICollection<Product> Products {get;set;}
}

在许多情况下,必须删除与产品相关的所有颜色并设置新颜色。所以我想删除所有多对多的关系,完全知道相关颜色的id。是否可以删除它们而无需对db进行其他查询?我知道我可以编写存储过程,删除指定产品的所有颜色关系,但最好通过实体框架找到一般方法。

1 个答案:

答案 0 :(得分:2)

如果您不知道颜色键,则无法在不加载它们的情况下将其删除 - EF会逐个删除记录,因此需要知道要删除的记录。

直接选项是直接执行SQL DELETE

dbContext.Database
         .ExecuteSqlCommand("DELETE FROM dbo.ProductColors WHERE ProductId = @Id", product.Id);