Записи удаляются из нокаут-интерфейса, но не из БД
Я использую WebApi в MVC 4 с EF, Ninject. В клиенте я использую knockout.js end, он удаляет мои записи из пользовательского интерфейса, но он все еще находится в БД. Добавить, обновить действие отлично работает.
Код клиента:
self.removeUser = function (user) {
var conj = ko.toJS(user);
var json = JSON.stringify(conj);
var Id = user.Id();
$.ajax({
url: API_URL + Id,
cache: false,
type: 'DELETE',
contentType: 'application/json; charset=utf-8',
data: '',
success: function () {
self.Users.remove(user);
}
});
}
WebAPI
// DELETE api/user/5
public HttpResponseMessage Delete(int id)
{
_userRepository.Delete(id);
return Request.CreateResponse(HttpStatusCode.NoContent);
}
вместилище
public void Delete(int userId)
{
var user = Get(userId);
_db.Users.Remove(user);
}
Когда начать? Какой путь?
1 ответ
Решение
Если вы хотите удалить объект, его недостаточно, чтобы удалить его из его коллекции. Вам нужно позвонить DbContext.SaveChanges()
чтобы зафиксировать транзакцию и сохранить ваши изменения в БД:
public void Delete(int userId)
{
var user = Get(userId);
_db.Users.Remove(user);
_db.SaveChanges();
}