Como atualizar uma fonte de ligação com base em um datacontext modificado
-
20-08-2019 - |
Pergunta
No meu aplicativo, extraio os dados de um datacontext LINQ para SQL para um dicionário para facilitar o uso como assim:
Jobs = dbc.Jobs.ToDictionary(j => j.Id, j => j);
Então eu ligo este dicionário a um Bindingsource:
bsJob.DataSource = jobManager.Jobs.Values.ToList();
Eu atualizo o DataContext e o dicionário regularmente para quando novos trabalhos são adicionados ao banco de dados (seja diretamente através do aplicativo local ou do aplicativo em execução em uma máquina diferente):
dbc.Refresh(RefreshMode.OverwriteCurrentValues, dbc.Job);
Jobs = dbc.Job.ToDictionary(j => j.Id, j => j);
Como posso atualizar o BindingSource para acomodar as mudanças também?
Solução
Não vejo a relação da classe Jobs com a classe do cliente, então assumirei que você pretendia digitar isso e não JobManager.customers.values.tolist ();
Supondo que você já tenha algum tipo de evento acionando sua atualização, pois mencionou que atualizou "regularmente", você pode atribuir um novo valor à propriedade BindingSource.DataSource naquele momento, como você fez originalmente.
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