linq - 如何使用 DbContext 使用 linq to EF 删除多行数据

标签 linq entity-framework

在一个项目中,我有一个包含以下列的数据库表
enter image description here
我希望能够从此表中删除所有具有我可以传入的匹配 SharingAgencyId 和 ReceivingAgencyId 值的行。
到目前为止我尝试过的:

 public static ICollection<SecurityDataShare> UpdateSharedEntites(long conAgency, long recAgency)
        {
            ICollection<SecurityDataShare> agShares = null;
            try
            {
                using (var context = new ProjSecurityEntities(string.Empty))
                {
                    agShares = (from a in context.SecurityDataShares
                               .Where(c => c.ReceivingAgencyId == recAgency && c.SharingAgencyId == conAgency)
                                select a); 
                }
            }
            catch (Exception ex)
            {
                //ToDo
                throw;
            }
        }
我的思考过程是检索 id 与传入参数匹配的记录,然后使用 foreach 循环遍历 (agShare) 并删除每一行,然后保存我的更改。使用当前的实现,我似乎无法访问任何 Delete 方法。
查看上面的示例,我很感激有关如何使用 dbContext 删除表中包含 43 和 39 值的行的任何建议。
干杯

最佳答案

如果我理解正确,您的 DbContext的属性,如 SecurityDataShares应该输入为 IDbSet<SecurityDataShare> .如果这是正确的,您应该可以使用 this Remove method .

foreach(var agShare in agShares) {
    context.SecurityDataShares.Remove(agShare);
}
context.SaveChanges();

请注意,这会创建一个单独的 SQL 语句来删除这些对象。如果您希望对象的数量相当大,您可能希望改用存储过程。

关于linq - 如何使用 DbContext 使用 linq to EF 删除多行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10214173/

相关文章:

c# - 如何使用 Linq 将对象投影到列表中?

c# - Linq to SQL Group by 和 sum in select with entity

c# - Linq-To-SQL GroupBy : How to calculate percentage column

c# - Entity Framework 的持续交付和数据库模式变化

c# - Entity Framework 迁移 NuGet 错误

entity-framework - 自托管 Azure 移动服务

c# - 优化慢速 LINQ 查询

c# - Elasticsearch 中的分组

c# - 通过继承创建一个惰性 DbContext 和一个急切 DbContext?

asp.net-mvc - 为什么 ASP.NET MVC WebAPI 模板使用 DbContext 作为成员变量?