我想知道如何搜索多个表并删除特定的行。
例如:
考虑以下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中的行。是否有任何方法可以同时从所有三个表中删除相似的行?
答案 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);
}
}