2011-09-19 199 views
0

我在實體框架(數記錄)使用的刪除記錄該代碼刪除實體框架

var tag = from t in objLib.TagsField where t.Book_ID_FK == id select t; 
      foreach (var t in tag) 
      { 
       objLib.TagsField.Context.DeleteObject(t); 
       objLib.SaveChanges(); 
      } 

我如何刪除不使用的每個代碼(這需要時間!)

回答

1

您的之後只需調用SaveChanges:

var tag = from t in objLib.TagsField where t.Book_ID_FK == id select t; 
     foreach (var t in tag) 
     { 
      objLib.TagsField.Context.DeleteObject(t); 
     } 
objLib.SaveChanges(); 
0

用LINQ刪除會將您要刪除的所有行帶入內存。如果它們不在內存中,則發出SQL語句以刪除數據庫中的行會更快。

除此之外,我會嘗試Davids的答案,因爲EF可以一起提供更新......我想這也會提高一些。

0

我用這個來實現同樣的事情......並且我正在使用Entity Framework 5.我知道Using()塊現在可以使用並且被推薦 - 但是這裏有一些基本的命令只適用於我添加一些替代品:

/// <summary> 
/// Method that will remove a favorite from the tblfavorite table. 
/// </summary> 
/// <param name="favoriteID"></param> 
/// <returns></returns> 
public Boolean DeleteFavoriteByFavoriteID(Int32 favoriteID) 
{ 
    //Assume not found. 
    IsFound = false; 

    //Query the DB. 
    var MatchedRec = (from f in dbContext.tblfavorites 
         where f.FavoriteID == favoriteID 
         select f).FirstOrDefault(); 

    //See if anything was found. 
    if (MatchedRec != null) 
    { 
     IsFound = true; 

     dbContext.tblfavorites.Remove(MatchedRec); 
     dbContext.SaveChanges(); 
     return true; 
    } 

    //Default. 
    return false; 
}