gpt4 book ai didi

database - MVC 5 更新数据库中一行的多个字段

转载 作者:太空狗 更新时间:2023-10-30 01:51:19 24 4
gpt4 key购买 nike

我正在练习 MVC 5,在我的应用程序中,我有一个 Controller 方法应该更新给定用户配置文件的地址信息。

我通过使用上下文对象访问数据库来做到这一点,我的第一个想法是将数据库行复制到一个对象,进行更改,然后使用 AddOrUpdate() 方法将其放回原处.但是,我只看到一个 Add() 方法。

所以我改为执行以下操作:

public ActionResult EditBillingDetails(EditBillingDetailsViewModel model)
{
if (ModelState.IsValid)
{
string id = User.Identity.GetUserId();
ApplicationDbContext db = new ApplicationDbContext();

db.Users.Single(u => u.Id == id).FirstName = model.FirstName;
db.Users.Single(u => u.Id == id).LastName = model.LastName;
db.Users.Single(u => u.Id == id).Email = model.Email;
db.Users.Single(u => u.Id == id).Address = model.Address;
db.Users.Single(u => u.Id == id).City = model.City;
db.Users.Single(u => u.Id == id).ZIP = model.ZIP;
db.Users.Single(u => u.Id == id).Country = model.Country;

db.SaveChanges();

return RedirectToAction("Manage", new { Message = ManageMessageId.ChangeBillingSuccess });
}
return View(model);
}

这很好用,但是为了逐一更新每个字段而去查找同一个条目 7 次感觉不对。有没有更好的方法来做到这一点?

最佳答案

如果您从数据库中检索实体,db.SaveChanges() 将负责用新值更新实体。 EF“跟踪”您从数据库中查询的实体(在本例中,调用 .Single())并且知道在您更改该实体的任何属性时将更改保存回数据库。如果您正在创建一个全新的实体,您只需添加到数据库。

var user = db.Users.Single(u => u.Id == id);
user.FirstName = model.FirstName;
user.LastName = model.LastName;
user.Email = model.Email;
user.Address = model.Address;
user.City = model.City;
user.ZIP = model.ZIP;
user.Country = model.Country;

db.SaveChanges();

关于database - MVC 5 更新数据库中一行的多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22516063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com