不允许两个不同对象范围之间的对象引用
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();
}
我正在尝试更新用户信息但出现错误。
控制器代码:
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();
}