2

我有数据库方案,其中产品表与颜色表有多对多的关系。我正在使用 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 进行额外查询的情况下删除它们?我知道我可以编写存储过程来删除指定产品与颜色的所有关系,但最好通过实体框架找到通用方法。

4

1 回答 1

2

如果您不知道颜色键,则必须先加载它们才能删除它们 - EF 会逐条删除记录,因此它需要知道要删除哪条记录。

直接的选项是直接执行 SQL DELETE

dbContext.Database
         .ExecuteSqlCommand("DELETE FROM dbo.ProductColors WHERE ProductId = @Id", product.Id);
于 2012-06-15T07:34:44.180 回答