Asp.net mvc 在ASP.NET MVC中更新数据是一种好方法吗?
我正在更新数据库中的现有数据。基本上,我从表中检索所有数据,并逐个手动更新每一列。你认为这是个好办法吗?或者请给我建议另一种简单的方法。我的方法看起来太长了,我的意思是要更新很多行Asp.net mvc 在ASP.NET MVC中更新数据是一种好方法吗?,asp.net-mvc,entity-framework,linq,Asp.net Mvc,Entity Framework,Linq,我正在更新数据库中的现有数据。基本上,我从表中检索所有数据,并逐个手动更新每一列。你认为这是个好办法吗?或者请给我建议另一种简单的方法。我的方法看起来太长了,我的意思是要更新很多行 [HttpPost] public ActionResult SaveMovie(HttpPostedFileBase file, MovieViewModel model) { if (!ModelState.IsValid) { var viewModel
[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;
}
首先,编写的代码很难重用,在维护过程中会遇到困难。假设您正在重复这样的代码并在多个文件中使用它,突然您发现另一个字段是必需的,需要添加。所以你必须改变所有的密码 其次,建议不要将数据操作代码放入控制器中。尝试创建另一层(类项目)以放置此类代码。使用Automapper类库绝对有助于减少映射
否则,正如上面Travis所建议的,您可以使用构造函数来填充属性。首先,编写的代码很难重用,在维护过程中会遇到困难。假设您正在重复这样的代码并在多个文件中使用它,突然您发现另一个字段是必需的,需要添加。所以你必须改变所有的密码 其次,建议不要将数据操作代码放入控制器中。尝试创建另一层(类项目)以放置此类代码。使用Automapper类库绝对有助于减少映射
否则,正如上面Travis所建议的,您可以使用构造函数来填充属性。有很多不同的方法来实现这一点。您可以使用复制构造函数、基于接口的强制、属性映射器或服务方法。您可以使用复制构造函数、基于接口的强制、属性映射器或服务方法。