使用一个主键实体框架组合键删除

时间:2017-04-12 12:39:03

标签: c# entity-framework-6 repository-pattern

以下是我的作业中的一些数据库设计

Customer
--------
CustomerID (PK)

Cake
-------
CakeID (PK)

Cart
-------
CustomerID (PK, FK)
CakeID (PK, FK)

我想在Cart Repository类中创建一个函数clearUserCart(User user),但我不知道如何使用指定用户删除所有行的函数。

编辑: 我已经想出了如何做到这一点,只需使用返回getCartOfUser(User user)的{​​{1}}。然后执行foreach循环删除。 在SQL中,它只能通过一行List<Cart>来实现,实体框架中是否有一个等效的一行语句?

2 个答案:

答案 0 :(得分:1)

如果您使用的是EF 6,则可以使用RemoveRange方法。

所以它看起来像这样;

context.Cart.RemoveRange(cartItem => cartItem.CustomerID == CustomerToDelete);

答案 1 :(得分:0)

1)您可以使用context.Carts.RemoveRange(queryable.Where(c => c.CustomerID == <the cust id>)).
2)您可以添加对Entity Framework Extended Library的引用,并使用此语法context.Carts.Where(c => c.CustomerID == <the cust id>).Delete()