Как обновить BindingSource на основе измененного DataContext
-
20-08-2019 - |
Вопрос
В моем приложении я извлекаю данные из контекста данных Linq To SQL в словарь для удобства использования следующим образом:
Jobs = dbc.Jobs.ToDictionary(j => j.Id, j => j);
Затем я привязываю этот словарь к BindingSource:
bsJob.DataSource = jobManager.Jobs.Values.ToList();
Я регулярно обновляю DataContext и Dictionary, когда в базу данных добавляются новые задания (непосредственно через локальное приложение или приложение, работающее на другом компьютере):
dbc.Refresh(RefreshMode.OverwriteCurrentValues, dbc.Job);
Jobs = dbc.Job.ToDictionary(j => j.Id, j => j);
Как я могу обновить BindingSource, чтобы учесть изменения?
Решение
Я не вижу связи между классом Jobs и классом Customer, поэтому предполагаю, что вы имели в виду это, а не jobManager.Customers.Values.ToList();
Предполагая, что у вас уже есть какое-то событие, запускающее обновление, поскольку вы упомянули, что обновляетесь «регулярно», вы можете присвоить новое значение свойству BindingSource.DataSource в это время, как вы это делали изначально.
dbc.Refresh(RefreshMode.OverwriteCurrentValues, dbc.Customer);
Customers = dbc.Customer.ToDictionary(c => c.Id, c => c);
bsJob.DataSource = jobManager.Jobs.Values.ToList(); //Assuming this statement was correct