我有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进行其他查询?我知道我可以编写存储过程,删除指定产品的所有颜色关系,但最好通过实体框架找到一般方法。
答案 0 :(得分:2)
如果您不知道颜色键,则无法在不加载它们的情况下将其删除 - EF会逐个删除记录,因此需要知道要删除的记录。
直接选项是直接执行SQL DELETE
:
dbContext.Database
.ExecuteSqlCommand("DELETE FROM dbo.ProductColors WHERE ProductId = @Id", product.Id);