如何搜索数据库中的每个表并删除特定的行

时间:2017-06-09 01:38:21

标签: c# database entity-framework linq

我想知道如何搜索多个表并删除特定的行。

例如:

  • table_a有列issue_id
  • table_b有列issue_id
  • table_c有列issue_id

考虑以下LINQ / Entity Framework查询:

Context db = new Context();

var row = from i in db.table_a
          where i.IssueID == 1
          select i;

db.Issues.RemoveRange(row);

这只删除table_a中的行。是否有任何方法可以同时从所有三个表中删除相似的行?

1 个答案:

答案 0 :(得分:0)

您可以尝试这种方法,假设我们所有有趣的表都实现了Iissue_id接口:

public interface Iissue_id
{
    int issue_id { get; set; }
}

public class table_a : Iissue_id
{
    public int issue_id { get; set; }
    //other properties
}

public void DeleteAllRowsWithIssue_id(int issue_id)
{
    using (var context = new MyContext())
    {
        foreach (var table in typeof(MyContext).Assembly.GetTypes().Where(x => x.GetInterface(nameof(Iissue_id)) != null).ToList())            
            context.Database.ExecuteSqlCommand($"delete from {table.Name} where id = @p0", issue_id);
    }
}