У меня странная ситуация.
У меня есть список, из которого мне нужно удалить элемент из БД, а затем все остальные, которые мне нужно просто увеличить и обновить.
Я использую .AsNoTracking () для фильтрации списка, но я не могу выполнить описанные выше действия. Говорит мне, что "" Свойство ListNumber "для типа объекта" LIST "является частью ключа и поэтому не может быть изменено или помечено как измененное. Чтобы изменить принципала существующего объекта с идентифицирующим внешним ключом, сначала удалите зависимого и вызовите «SaveChanges», а затем свяжите зависимого с новым принципалом. "
Я также пытался создать 1 метод для удаления и 1 для обновления оставшихся элементов и вызова их из контроллера (первый - удаление, второй - обновление), но тот же результат.
Любой может помочь мне, потому что я застрял, я бы Я высоко ценю четкий пример или подход к тому, как я могу справиться с вышеуказанной ситуацией.
Заранее спасибо.
Так я называю методы из контроллера
await _repo.RemoveFromList("1234", "1");
await _repo.ResetList("1234");
Ниже приведены методы, которые я использую, удалить один работает, но когда я использую список сброса, я получил исключение
public async Task RemoveFromList(string listNumber, string listItem)
{
try
{
var entity = await _context.LIST.Where(x => x.ListNumber == listNumber && x.ListItem == listItem).FirstOrDefaultAsync();
_context.LIST.Remove(entity);
await _context.SaveChangesAsync();
}
catch (Exception ex)
{
throw;
}
}
public async Task ResetList(string listNumber)
{
try
{
var entities = await _context.LIST.AsQueryable().Where(x => ListNumber== listNumber).ToListAsync();
var startFrom = 1;
foreach (var en in entities)
{
en.NewListNumber = startFrom.ToString().PadLeft(3, '0');
startFrom++;
_context.LIST.Update(en);
}
await _context.SaveChangesAsync();
}
catch (Exception ex)
{
throw;
}
}