相关疑难解决方法(0)

无法跟踪实体类型的实例,因为已经跟踪了具有相同键的此类型的另一个实例

我有一个服务对象 Update

public bool Update(object original, object modified)
{
    var originalClient = (Client)original;
    var modifiedClient = (Client)modified;
    _context.Clients.Update(originalClient); //<-- throws the error
    _context.SaveChanges();
    //Variance checking and logging of changes between the modified and original
}
Run Code Online (Sandbox Code Playgroud)

这是我从以下方法调用此方法的地方:

public IActionResult Update(DetailViewModel vm)
{
    var originalClient = (Client)_service.GetAsNoTracking(vm.ClientId);
    var modifiedClient = (Client)_service.Fetch(vm.ClientId.ToString());
    // Changing the modifiedClient here
    _service.Update(originalClient, modifiedClient);
}
Run Code Online (Sandbox Code Playgroud)

这是GetAsNotTracking方法:

public Client GetAsNoTracking(long id)
{
    return GetClientQueryableObject(id).AsNoTracking().FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

Fetch 方法:

public object Fetch(string id)
{
   long fetchId;
   long.TryParse(id, out fetchId); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net entity-framework

35
推荐指数
8
解决办法
5万
查看次数

标签 统计

asp.net ×1

c# ×1

entity-framework ×1