Bonsoir,
J’aurais besoin d’un peu d’aide (lien ou autre) pour me dépatouiller de mon problème !
J’utilise EF 4.1.0 pour accéder à une base SQL Server, j’ai crée mon model et j’aimerais binder une requête sur un DGV

Définition du context + variables :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
    Dim ctx As New PhilaEntities ' fermé à la fermeture du Form par "ctx.Dispose()"
    Dim CivToDelete As Civilite  ' utilisé pour suppression directe sur ligne du DGV
Je charge le bindingsource
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
     ctx.Civilites.Load()
      CiviliteBindingSource.DataSource = ctx.Civilites.Local
Quelle est la meilleure solution pour « charger » le résultat d’une requete, faire un list(of ) ou un ObjectResult(Of ) ??

J’ai un bouton save
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
        CiviliteDataGridView.EndEdit()
        CiviliteBindingSource.EndEdit()
        Try
            ctx.SaveChanges()
        Catch ex As Exception
            MessageBox.Show("erreur dans le savechange = " & e.ToString)
        End Try
Une fonction pour supprimer directement depuis la ligne du DGV
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
    Private Sub CiviliteDataGridView_UserDeletedRow(sender As Object, e As System.Windows.Forms.DataGridViewRowEventArgs) Handles CiviliteDataGridView.UserDeletedRow
        If True Then
            If CivToDelete IsNot Nothing Then
                ctx.Civilites.Remove(CivToDelete)
                CivToDelete = Nothing
            End If
        End If
    End Sub
 
Private Sub CiviliteDataGridView_UserDeletingRow(sender As Object, e As System.Windows.Forms.DataGridViewRowCancelEventArgs) Handles CiviliteDataGridView.UserDeletingRow
        CivToDelete = TryCast(CiviliteBindingSource.Current, Civilite)
    End Sub

Et un bouton delete
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
        If MessageBox.Show("Etes vous sûr de vouloir supprimer cette ligne ?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
            CiviliteBindingSource.RemoveCurrent()
        End If
Résultats :
- Ajouts / modifs : pas de pb
- si je supprime une ou plusieurs lignes directement sur le DGV puis save : pas de pb
- si je sélectionne une ligne sur le DGV et que je clique sur delete, la ligne se supprime du DGV mais le save ou ne remplit pas sa fonction ou me génère une erreur System.EventArgs

Bref tout conseil sera le bienvenu !
Bertrand