我使用此代码删除实体框架中的记录(几条记录)
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 :(得分: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();
答案 1 :(得分:0)
使用LINQ删除会将您要删除的所有行都带入内存。如果它们不在内存中,则发出SQL语句以从数据库中删除行会更快。
除此之外,我会尝试戴维斯的答案,因为EF可以将更新结合在一起......我想这也可以提高性能。
答案 2 :(得分: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;
}