Я делаю приложение, используя платформу ASP.Net Boilerplate, и на моем доменном уровне у меня есть простая сущность "Boss".Создание и извлечение этих объектов из базы данных работает нормально, но я не могу заставить работать «Обновление».Когда я сопоставляю «UpdateBossDto» с объектом Boss и пытаюсь обновить его, я получаю эту ошибку:
$ exception {System.InvalidOperationException: экземпляр типа сущности 'Boss' не может быть отслежен, поскольку другой экземплярс тем же значением ключа для {'Id'} уже отслеживается.При подключении существующих объектов убедитесь, что подключен только один экземпляр объекта с данным значением ключа.Подумайте об использовании DbContextOptionsBuilder.EnableSensitiveDataLogging для просмотра конфликтующих значений ключа.
Эта ошибка вызывается в классе BossManager (я удалил другие методы для удобства чтения.
public class BossManager : DomainService, IBossManager
{
private readonly IRepository<Boss> _repositoryBoss;
public BossManager(IRepository<Boss> repositoryBoss)
{
_repositoryBoss = repositoryBoss;
}
public void Update(Boss entity)
{
_repositoryBoss.UpdateAsync(entity);
}
}
Вот мой метод Update в BossAppService (я знаю, что получить идентификатор таким образом, вероятно, не очень хорошо, но сейчас я просто в отчаянии):
public void Update(UpdateBossDto updatedBoss)
{
var boss = new Boss();
updatedBoss.Id = _bossManager.GetBossIdByName(updatedBoss.Name);
boss = ObjectMapper.Map<Boss>(updatedBoss);
_bossManager.Update(boss);
}
И мой класс UpdateDto, который содержит те же атрибуты, что исам класс боссов:
public class UpdateBossDto
{
public int Id { get; set; }
public string Name { get; set; }
public int Hp { get; set; }
public int CombatLvl { get; set; }
public int MaxHit { get; set; }
public string AttackStyle { get; set; }
public string Weakness { get; set; }
public string ImageUrl { get; set; }
}
Как я могу обновить объект боссов с идентификатором или без него? Любая помощь будет принята с благодарностью!