不允许两个不同对象范围之间的对象引用

Object references between two different object scopes are not allowed

我正在尝试更新用户信息但出现错误。

控制器代码:

var User = (somr linq query).firstorDefault

linq 查询的结果以我的 Viewmodel 的形式出现,而我的 viewModel Class 就像

public partial class UsersInformation
    {
        public TableUserAccount UserAccount { get; set; }
        public uint OwnerId { get; set; }
        public string CountryName { get; set; }   
    }

我正在尝试更新以 ViewModel UsersInformation 形式出现的数据

User.LastLoginDT = DateTime.Now;
User.TermsnCondAcceptDtID = LatestTerms.Id;
User.TermsnCondAcceptDt = DateTime.Now;
UserAccountService.UpdateUserInfo(User); //Passing object to Service

服务中的更新代码:

private static void updateInfo(tableUserAccount object)
{
    using (var con = new MyModelName())
    {
          con.Add(object);
          con.SaveChanges();
    }
}

错误信息:

Object references between two different object scopes are not allowed.
The object 'Shared.Models.Tbluseraccount' is already managed by
'ObjectScopeImpl 0x1b' and was tried to be managed again by
'ObjectScopeImpl 0x1c OpenAccessRuntime.EnlistableObjectScope'. 

问题是因为您使用一个上下文检索实体。

var User = (somr linq query).firstorDefault

然后您尝试使用不同的上下文保存实体。

using (var con = new MyModelName())
{
      con.Add(object);
      con.SaveChanges();
}

尝试以下操作:

using (var ctx = new MyModelName())
{
    var User = (some linq query using ctx).FirstOrDefault();

    object.LastLoginDT = DateTime.Now;
    object.TermsnCondAcceptDtID = 14;
    object.TermsnCondAcceptDt = DateTime.Now;

    updateInfo(object, ctx);
}

private static void updateInfo(tableUserAccount object, MyModelName ctx)
{
    ctx.Add(object);
    ctx.SaveChanges();
}