当我使用实体框架在 Blazor Web 程序集中编辑相同的数据两次时,出现错误

问题描述 投票:0回答:1

错误是

无法跟踪实体类型“Person”的实例,因为已跟踪具有相同键值 {'Id'} 的另一个实例。附加现有实体时,请确保仅附加一个具有给定键值的实体实例。考虑使用

这是我的代码:

public async Task<Person> GetPersonById(Guid Id)
{
    return await _context.Person.AsNoTracking()
                         .Where(t => t.Id == Id).FirstOrDefaultAsync();
}

public async Task<Guid> EditPerson(Person Updateperson)
{
    if (Updateperson.Id != null)
    {
        Updateperson.ModifiedOn = DateTime.Now;
        Updateperson.ModifiedBy = Updateperson.CreatedBy;

        _context.Update(Updateperson);
        await _context.SaveChangesAsync();

        return Updateperson.Id;
    }
    else
    {
        return Guid.Empty;
    }
}

在 Blazor 单页应用程序中,当我两次编辑同一条记录而不进行硬刷新时,第二次不会更新该记录。

谁能提供解决方案吗?

entity-framework blazor-webassembly
1个回答
0
投票

我也有同样的问题。我不是专家,但这对我有帮助:使用“FindAsync”代替“AsNoTracking”。试试这个:

public async Task<Person> GetPersonById(Guid Id)
{
    return await _context.Person.FindAsync(Id);
}
© www.soinside.com 2019 - 2024. All rights reserved.