Bindingsource filho ligado ao conjunto de entidades filho não atualiza
Eu tenho uma tabela, SampleData, que tem uma tabela filho, Medidas. No meu WinForm, frmMain, um único objeto SampleData está vinculado ao SampleDataBindingSource; o MeasurementsBindingSource tem SampleDataBindingSource como sua origem de dados e Measurements como seu DataMember. Um conjunto de caixas de texto está vinculado a SampleDataBindingSource; um datagridview está ligado a MeasurementsBindingSource.
Para frmMain, também tenho uma classe de apresentador, preMain, que contém uma propriedade, CurrentSample, do tipo SampleData. oSampleDataBindingSource.DataSource
está ligado à propriedade CurrentSample de preMain.
Quando um número suficiente de propriedades em Measurements foi atribuído, ele calcula o FiringFactor e, se o FiringFactor não for 1, ele adiciona outro item Measurement ao entityset Measurement do CurrentSample:
Partial Class Measurement
Private Sub UpdateFiringFactor()
Dim necessaryDataIsAvailable As Boolean = (Me.CrucibleMass IsNot Nothing And _
Me.CrucibleSampleFiredMass IsNot Nothing And _
Me.CrucibleSampleMass IsNot Nothing)
If necessaryDataIsAvailable Then
Me.FiringFactor = CDbl((Me.CrucibleSampleFiredMass - Me.CrucibleMass) / (Me.CrucibleSampleMass - Me.CrucibleMass))
If Me.FiringFactor <> 1 Then
Me.SampleData.AddNewMeasurement()
End If
End If
End Sub
Private Sub OnCrucibleMassChanged()
UpdateFiringFactor()
End Sub
Private Sub OnCrucibleSampleFiredMassChanged()
UpdateFiringFactor()
End Sub
Private Sub OnCrucibleSampleMassChanged()
UpdateFiringFactor()
End Sub
End Class
Quando insiro valores para CrucibleMass, CrucibleSampleMass e CrucibleSampleFiredMass no datagridview, o método UpdateFiringFactor é executado corretamente e, eventualmente, recebo outro item de Medição adicionado ao entityset Measurements de CurrentSample. No entanto, o datagridview não mostra uma nova linha e o MeasurementsBindingSource tem apenas 1 registro (masCurrentSample.Measurements.Count = 2
).
Por que a mudança naCurrentSample.Measurements
não se propagar paraMeasurementsBindingSource
? eu tenteiMeasurementsBindingSource.ResetBindings(False)
, MeasurementsDataGridView.Refresh
, SampleDataBindingSource.ResetBindings(False)
, mas nada parece atualizarMeasurementsBindingSource
ou seu datagridview.