Функция обновления класса модели ASP.NET MVC - PullRequest
2 голосов
/ 28 декабря 2011

Я изучаю ASP.NET MVC и Entity Framework.

После изучения этой веб-ссылки , я думаю, что когда мы хотим сделать процесс обновления,

  1. нам нужно сначала удалить существующую запись
  2. , а затем вставить новую запись.

Мой код:

public List<UserModel> _usrList = new List<UserModel>();

public void Update(UserModel umToUpdate)
{
        foreach (UserModel um in _usrList)
        {
            if (um.UserName == umToUpdate.UserName)
            {
                _usrList.Remove(um);
                _usrList.Add(umToUpdate);
                break;
            }
        }
    }

Когда мы делали традиционным способоммы можем обновить данные, не удаляя их.

(eg. update tablename set column = value where columnname = value)

Итак, теперь я ищу способ сделать процесс обновления без удаления исходных строк.

Возможно ли это в Entity Framework?

Пожалуйста, дайте мне знатьспособ.

1 Ответ

3 голосов
/ 28 декабря 2011

Этот пример касается создания представлений и проверки на стороне клиента, к сожалению, серверная часть (IMO) плохая. Плохо в том смысле, что это создает путаницу ... Вы правы, вы не должны делать это с реальной базой данных.

Но есть примеры EF на сайте asp.net: http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-basic-crud-functionality-with-the-entity-framework-in-asp-net-mvc-application

Ответы:

В приведенном вами примере я покажу, что context.Entry(student).State = EntityState.Modified; - это все, что нам нужно делать, когда нам нужно обновить? пожалуйста, объясните мне снова.

Почти эта строка сообщает EF, что эта запись обновлена, и это текущие значения. Сейчас изменения происходят только в памяти сервера. Вы фактически сохраняете изменения обратно в базу данных, выполняя команду db.SaveChanges();. Остальное обрабатывает EF. См. «Создание страницы редактирования» в примере.

если так, разве нам не нужно сначала удалить существующую запись?

Нет, к сожалению, первый пример без БД сбивает с толку. Когда я впервые увидел это, я подумал: «Черт, этот парень курит?». Просто чтобы понять, что это официальный образец ...

и затем, разве нам не нужно задавать какие-либо параметры условия для процесса обновления?

Не нужно делать это явно, поскольку привязка модели MVC заботится о считывании всех значений (включая PersonID в скрытом поле) из опубликованных данных. Идентификатор текущей записи находится в скрытом html-поле, поэтому MVC знает, какую запись вы обновляете. Например: Views \ Students \ Edit.cshtml строка 17:

@Html.HiddenFor(model => model.PersonID)

И все работает "автоматически".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...