C# 更新identitymodel表时,entity对象不能被IEntityChangeTracker的多个实例引用
我正在尝试更新identitymodel中名为EkipaId的自定义字段C# 更新identitymodel表时,entity对象不能被IEntityChangeTracker的多个实例引用,c#,entity-framework,model-view-controller,C#,Entity Framework,Model View Controller,我正在尝试更新identitymodel中名为EkipaId的自定义字段 public ActionResult JoinTeam(int id) { ApplicationDbContext db = new ApplicationDbContext(); var currentUserId = User.Identity.GetUserId(); var manager = new UserManager<Applic
public ActionResult JoinTeam(int id)
{
ApplicationDbContext db = new ApplicationDbContext();
var currentUserId = User.Identity.GetUserId();
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var currentUser = manager.FindById(User.Identity.GetUserId());
currentUser.EkipaId = id;
db.Users.Attach(currentUser);
db.Entry(currentUser).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Ekipa", "Home");
}
public ActionResult联合团队(int-id)
{
ApplicationDbContext db=新的ApplicationDbContext();
var currentUserId=User.Identity.GetUserId();
var manager=newusermanager(newuserstore(newapplicationdbcontext());
var currentUser=manager.FindById(User.Identity.GetUserId());
currentUser.EkipaId=id;
db.Users.Attach(当前用户);
db.Entry(currentUser).State=System.Data.Entity.EntityState.Modified;
db.SaveChanges();
返回操作(“Ekipa”、“主页”);
}
我转到url/Home/JoinTeam/1,得到一个异常。
我找到当前用户,并将EkipaId设置为url中的Id。
我得到“一个实体对象不能被IEntityChangeTracker的多个实例引用”
我读过关于分离对象的内容,但它以前没有附加。您需要处理DbContext,并让UserManager使用相同的实例。大概是这样的:
public ActionResult JoinTeam(int id)
{
using(ApplicationDbContext db = new ApplicationDbContext())
{
var currentUserId = User.Identity.GetUserId();
var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(db));
var currentUser = manager.FindById(User.Identity.GetUserId());
currentUser.EkipaId = id;
db.Users.Attach(currentUser);
db.Entry(currentUser).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Ekipa", "Home");
}
}
public ActionResult联合团队(int-id)
{
使用(ApplicationDbContext db=new ApplicationDbContext())
{
var currentUserId=User.Identity.GetUserId();
var manager=new UserManager您第一次运行时是否得到它?您没有处理DbContext,这会在多次运行时导致问题。编辑:还将创建的上下文db
传递到您的UserManager
是的,我第一次运行它时就得到了。如何将它传递给UserManager?