2017-06-09 52 views
0

我想知道如何搜索多個表並刪除特定的行。如何搜索數據庫中的每個表並刪除特定的行

例如:

  • 表-A具有柱ISSUE_ID
  • 表-B已經柱ISSUE_ID
  • table_c具有柱ISSUE_ID

考慮以下LINQ /實體框架查詢:

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

@STLDeveloper感謝您對我的編輯問題,對不起,如果我的問題迷惑你們 – SadLife

+0

你會考慮使用在數據庫模式設計中刪除級聯操作? – Monza

+0

@Monza喜歡linq,但如果不能,那麼需要應用mysql – SadLife

回答

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); 
    } 
} 
相關問題