1

次のクエリを使用して、EF からレコードを削除しようとしています。

 public void ClearAllLocks(Lock LockObj)
    {
        var Stf = context.Locks.First(S => S.UserId == LockObj.UserId);

        if (Stf == null)
        {
            return;
        }
        context.Locks.DeleteObject(Stf);
        context.SaveChanges();
    }

しかし、私は最初のレコードしか削除できず、理由もわかっています (First を使用しているため)、すべてのエントリを削除できるようにするには、First の代わりに何を書く必要がありますか。

4

1 に答える 1

2
public void ClearAllLocks(Lock LockObj)
{
    var locksToDelete = context.Locks.Where(s => s.UserId == LockObj.UserId);

    foreach(var stf in locksToDelete)
       context.Locks.DeleteObject(stf);

    context.SaveChanges();
}

また、EntityFramework.Extendedを使用することもできます(NuGet で検索):

public void ClearAllLocks(Lock LockObj)
{
    context.Locks.Delete(s => s.UserId == LockObj.UserId);        
    context.SaveChanges();
}
于 2013-01-24T07:25:29.337 に答える