Mam obiekt User i kiedy jest on usuwany przy użyciu Remove() w DbContext, nie jest usuwany z bazy danych. Co dziwne, moje zapytania dotyczące pobierania użytkowników już nie zwracają.Entity Framework 5 Remove() nie usuwa z bazy danych
Ten kod jest używany przez moją aplikację i działa bez żadnych problemów dla innych podmiotów.
Naprawdę doceniam sugestie, co to może być, ponieważ jestem zaskoczony!
#region Delete
public virtual void Delete(User entity)
{
var user = _context.Users.FirstOrDefault(u => u.UserId == entity.UserId);
if (user != null)
{
user.Roles.Clear();
var actionHistories = _context.ActionHistories.Where(u => u.User.UserId == user.UserId);
foreach (var actionHistory in actionHistories)
{
_context.ActionHistories.Remove(actionHistory);
}
_context.Users.Remove(user);
_context.SaveChanges();
}
}
#endregion
P.S Kod do usuwania ról i ActionHistories został dodany przeze mnie aby sprawdzić, czy problem był z podmiotami powiązanymi istniejących, ale to nie rozwiąże problemu.
Jaki jest błąd, który otrzymujesz? – DarthVader
Czy otworzyłeś transakcję poza swoją metodą usuwania? Obiekt nie zostanie usunięty z bazy danych, dopóki nie zostanie zatwierdzona transakcja. Inne zapytania korzystające z tego samego kontekstu nie zobaczą usuniętego "użytkownika", ponieważ kontekst ma obiekt oznaczony jako "usunięty" –
_ "nie jest usuwany z bazy danych. Co dziwne, moje zapytania o odzyskanie użytkowników już go nie zwracają jednak. "_ - wtedy to przeanalizuj. Czy używasz niestandardowego 'DbContext', który na przykład ustawia flagę' Deleted' zamiast usuwania wierszy z twardego? W jaki sposób pytasz o użytkownika i dlaczego go nie zwraca, jeśli wiersz nadal istnieje? Czy twoja aplikacja używa tego samego ciągu połączenia, co podczas sprawdzania bazy danych? – CodeCaster