2016-12-13 97 views
0

我是一名LINQ新手,因此如果能夠徹底解釋您的答案,我將不勝感激。我想要做的是我有一個名爲ContentTable的表。此ContentTable具有不同的列和行,其中一列使用EntityId。如何使用LINQ創建數據庫查詢通過使用ID列表和避免循環來刪除行

enter image description here

在我的方法,我從什麼地方得到的列表ID的列表。我不想遍歷這個列表並查詢每個ID的數據庫,因爲那樣會很昂貴,但是我想要一個查詢,它使用列表中的ID來匹配表中的EntityID,並且如果有這樣的一個匹配,我刪除表中的整行。你可以幫我嗎?提前致謝!

回答

0

您可以使用Entity Framework Extensions來做到這一點。就像這樣:

this.Container.Devices.Delete(
      o => o.Id == 1, 
      o => o.Id == 2 
     ); 
+0

您確定這是發生在單個命令中,還是多個命令和單個事務 –

0

有些事情可能會有所幫助,但是如果表太大(數百萬)Linq to sql會鎖定表。同樣,對於每個實體,它都會發出一個T-SQL Delete語句來刪除該實體。

public void DeleteContents(List<int> entityIds) 
    { 
     using (Yourcontext db = new Yourcontext()) 
     { 
      IQueryable<ContentTable> contents = db.ContentTable.Where((x) => ids.Contains(x.EntityId)); 

      db.ProductComplianceRules.DeleteAllOnSubmit(contents); 
     } 
    } 
相關問題