Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新identitymodel表时,entity对象不能被IEntityChangeTracker的多个实例引用_C#_Entity Framework_Model View Controller - Fatal编程技术网

C# 更新identitymodel表时,entity对象不能被IEntityChangeTracker的多个实例引用

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

我正在尝试更新identitymodel中名为EkipaId的自定义字段

      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?