在实体框架中删除

本文关键字:删除 框架 实体 | 更新日期: 2023-09-27 18:08:56

我使用这个代码来删除实体框架中的记录(几个记录)

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();
            }

我如何删除它而不使用每个这个代码(它需要时间!!)

在实体框架中删除

之后调用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();

使用LINQ删除将把您要删除的所有行带入内存。如果它们不在内存中,那么发出SQL语句从数据库中删除这些行会更快。

除此之外,我会尝试david的回答,因为EF可以将更新放在一起…我想这也会提高你的表现。

我用这个来实现同样的事情…我正在使用实体框架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;
}