Всем привет и спасибо за вашу помощь.
У меня большие трудности с обновлением данных DataBinding с помощью Linq. Я много читал и действительно не нашел решения. Я использую следующий код:
private void MontaGrid()
{
var ini = DateTime.Parse(dtIni.EditValue.ToString()).Date;
var fim = DateTime.Parse(dtFim.EditValue.ToString()).Date.AddDays(1);
_ctx.programacao.Where(c => c.data >= ini && c.data < fim)
.OrderBy(c => c.data)
.ThenBy(c => c.id_programacao)
.Load();
programacaoBindingSource.DataSource = _ctx.programacao.Local.ToBindingList();
}
Идея состоит в том, чтобы загрузить отфильтрованные данные, передавая только те, которые представляют интерес для BindingSource.
Итак, при загрузке с помощью Load () и назначьте данные, которые уже находятся на машине, в BindingSource с помощью .Local.ToBindingList ().
Загрузка первой консультации происходит нормально. Однако, когда я меняю дату и повторяю команду, данные из предыдущего запроса не исчезают, а накапливаются. Если я повторяю более крупный запрос даже в период, он приносит больше данных и отображает. Если я сокращу период, данные не исчезнут, они останутся там.
Чтобы быть уверенным, что SELECT генерируется Linq, я проверил выполнение вызова в профилировщике XEvent Management Studio SQL Сервер и заметил, что сгенерированный код правильный.
Я протестировал нагрузку BindingSource на разных компонентах, и все они представляют одну и ту же ситуацию, что заставляет меня думать, что проблема в BindingSource.
Я попытался избежать .Local () и использовал другой подход (код ниже), но с .ToList () я не могу включать новые записи: когда я использую его и применяю context.SaveChanges (), я не получаю сообщение об ошибке и новая запись не сохранена.
programacaoBindingSource.DataSource = _ctx.programacao.Where(c => c.data >= ini && c.data < fim)
.OrderBy(c => c.data)
.ThenBy(c => c.id_programacao)
.ToList();
Я всегда работал со всеми CRUD вручную с помощью EF + Linq, но это большая работа, и теперь я пытаюсь перейти на BindingSource, чтобы автоматизировать эти задачи и из-за моей неопытности я испытываю трудности в этом вопросе.
Пожалуйста, не могли бы вы помочь мне?