Цикл продолжает собирать одни и те же записи
Я сохраняю запись в своей базе данных, передавая 3 параметра, параметр number передается для выбора количества записей из одной таблицы в другую таблицу. Однако цикл продолжает вставлять одно и то же количество записей вместо того, чтобы проверять наличие существующих стикеркодов в другой таблице IntermediaryAssignment перед вставкой из таблицы распределения стикеров.оператор foreach, по-видимому, работает не очень хорошо
Скрыть Код Скопировать
if (dbSet.Any(s => s.StickerCode != sticker.StickerCode))
Пожалуйста, помогите.Кроме того, он также не обновляет IntermediaryDispatched
Что я уже пробовал:
public async Task<bool> Save(string company, int number,string registrationNumber) { using (var trans = _dbContext.Database.BeginTransaction()) { var db = new DatabaseContext(); var dbSet = _dbContext.Set<IntermediaryAssignment>(); // set the database var check =await (from s in db.StickerDistributions join i in db.IntermediaryAssignment on s.CompanyCode equals i.CompanyCode where s.Dispatched == false && s.CompanyCode == company && s.StickerCode != i.StickerCode select s).ToListAsync(); var datas = await (from s in db.StickerDistributions where s.Dispatched == false && s.CompanyCode == company && s.IntermediaryDispatched == false select s).ToListAsync(); var data = await (from s in db.StickerDistributions where s.Dispatched == false && s.CompanyCode == company && s.IntermediaryDispatched == false select s).Take(number).ToListAsync(); var intermediary = (await _repo.FindBy(s => s.RegistrationNumber == registrationNumber && s.Status == EntityStatus.Active)).FirstOrDefault(); foreach (var sticker in data) { if (dbSet.Any(s => s.StickerCode != sticker.StickerCode)) { var entity = new IntermediaryAssignment(); entity.CompanyCode = sticker.CompanyCode; entity.StickerCode = sticker.StickerCode; entity.RegistrationNumber = intermediary.RegistrationNumber; entity.Status = EntityStatus.Active; entity.CreatedDate = DateTime.Now; entity.Dispatched = false; entity.IntermediaryType = intermediary.IntermediaryType; // entity.Sticker.Id = sticker.Sticker.Id; sticker.IntermediaryDispatched = true; dbSet.Add(entity); } } Task results = _dbContext.SaveChangesAsync() ; trans.Commit(); return true ; } }
ZurdoDev
Какая часть кода не работает?
Member 13053943
цикл foreach работает не очень хорошо,вот где возникает проблема from.it выбирает те же данные stickerdistribution table и set помещает их в dbSet<Intermediate>