Это хороший способ обновить данные в ASP.NET MVC? - PullRequest
0 голосов
/ 11 июля 2019

Я обновляю существующие данные в базе данных.По сути, я извлекаю все данные из таблицы и обновляю каждый столбец вручную.Как вы думаете, это хороший способ?Или, пожалуйста, предложите мне другой короткий способ сделать то же самое.Мой метод выглядит так долго, я имею в виду много строк для обновления.

[HttpPost]
public ActionResult SaveMovie(HttpPostedFileBase file, MovieViewModel model)
{
        if (!ModelState.IsValid)
        {
            var viewModel = new MovieViewModel
            {
                ProHouses = _context.ProHouses.ToList()
            };

            return View("AddMovie", viewModel);
        }

        if (model.Movies.Id == 0)
        {
            if (file != null)
            {
                Guid RandomName = Guid.NewGuid();
                var fileExtention = Path.GetExtension(file.FileName);
                var FileName = RandomName + fileExtention;
                var path = Path.Combine(Server.MapPath("~/MovieTitle"), RandomName + fileExtention);
                file.SaveAs(path);
                model.Movies.TitleURL = FileName;
            }

            _context.Movies.Add(model.Movies);
        }
        else
        {
            var movieInTable = _context.Movies.SingleOrDefault(m => m.Id == model.Movies.Id);
            movieInTable.Budget = model.Movies.Budget;
            movieInTable.Writer = model.Movies.Writer;
            movieInTable.Country = model.Movies.Country;
            movieInTable.Genre = model.Movies.Genre;
            movieInTable.Duration = model.Movies.Duration;
            movieInTable.Plot = model.Movies.Plot;
            movieInTable.Name = model.Movies.Name;
            movieInTable.ProHouseId = model.Movies.ProHouseId;
            movieInTable.Rating = model.Movies.Rating;
            movieInTable.Director = model.Movies.Director;
            movieInTable.Year = model.Movies.Year;
            movieInTable.TitleURL = model.Movies.TitleURL;
        }

        _context.SaveChanges();

        ViewBag.Message = "Movie Added";

        return View("Confirmation");
}

Я запутался в этой части:

else
{
    var movieInTable = _context.Movies.SingleOrDefault(m => m.Id == model.Movies.Id);
    movieInTable.Budget = model.Movies.Budget;
    movieInTable.Writer = model.Movies.Writer;
    movieInTable.Country = model.Movies.Country;
    movieInTable.Genre = model.Movies.Genre;
    movieInTable.Duration = model.Movies.Duration;
    movieInTable.Plot = model.Movies.Plot;
    movieInTable.Name = model.Movies.Name;
    movieInTable.ProHouseId = model.Movies.ProHouseId;
    movieInTable.Rating = model.Movies.Rating;
    movieInTable.Director = model.Movies.Director;
    movieInTable.Year = model.Movies.Year;
    movieInTable.TitleURL = model.Movies.TitleURL;
}

1 Ответ

2 голосов
/ 13 июля 2019

Во-первых, написанный код трудно использовать повторно, и у вас возникнут трудности при обслуживании. Предположим, что вы повторяете такой код и используете его в нескольких файлах, неожиданно вы обнаруживаете, что требуется другое поле и его необходимо добавить. Таким образом, вы должны изменить все коды.

Во-вторых, рекомендуется не помещать ваши коды Data Manipulation в контроллер. Попробуйте создать еще один слой (класс проекта), чтобы поставить такие коды. Использование библиотеки классов Automapper абсолютно поможет вам уменьшить отображение.

В противном случае, как предложил Тревис выше, вы можете использовать конструктор для заполнения свойств.

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