Vincular DataGridView a Entidades de uma maneira “mestre-detalhada”
Estou tentando estabelecer uma relação entre mestre e detalhes entre dois DataGridView. Eu tenho um EntityModel com duas entidades conectadas pela associação "ClientComissions". Eles foram gerados a partir de um banco de dados existente e possuem propriedades de navegação, que funcionam bem. Prova (aplicativo de console usando o EntityModel mencionado):
<code> using (var context = new MnxEntities()) { Client client = context.Clients.FirstOrDefault(); // profiler: "SELECT TOP (1) ... FROM [Clients] AS [c]" - Ok! Console.WriteLine("Client: {0}", client.Name); foreach (Comission comission in client.NavComissions) // profiler: "SELECT ... FROM [Comissions] WHERE [StateCode] = '20971504'" - Ok! { Console.WriteLine("Agreement number: {0}", comission.Dog_Num); } } </code>
Mas eu não posso vincular dois DataGridViews de uma maneira mestre-detalhada no formulário do windows:
<code> private void tabComissions_Enter(object sender, EventArgs e) { using (var context = new MnxEntities()) { clientDataGridView.DataSource = context.Clients; comissionsDataGridView.DataSource = clientDataGridView.DataSource; comissionsDataGridView.DataMember = "WHAT SHOULD BE HERE?"; } } </code>
Eu sei que há um BindingContext, que deve fazer todo o trabalho usando CurrencyManager, sem necessidade de código escrito à mão.
Eu fiquei aqui por muito tempo. Ajuda por favor.
UPD:
<code> private void AnswerFromStackRefactored() { using (var context = new MnxEntities()) { clientBindingSource.DataSource = context; clientBindingSource.DataMember = "Clients"; navComissionsBindingSource.DataSource = clientBindingSource; navComissionsBindingSource.DataMember = "NavComissions"; } } </code>
esse código carrega as comissões somente uma vez, para o primeiro cliente na grade. Mas quando eu mudo a linha atual na grade dos clientes não há mais nenhuma consulta ao DB e navComissionsGrid sempre mostra a comissão para o primeiro cliente. :(