gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:57 24 4
gpt4 key购买 nike

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

Controller 代码:

var User = (somr linq query).firstorDefault

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

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();
}

关于c# - 不允许两个不同对象范围之间的对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29791225/

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