J'ai toujours pensé que je comprenais comment cela fonctionnait ... mais dernièrement j'ai commencé à vraiment utiliser des interfaces et maintenant les choses ne sont plus ce à quoi je m'attends. En utilisant le framework d'entité, j'ai un service pour chaque objet qui est responsable de l'interaction avec la base de données et ainsi de suite .... sur mon seul service je passe la collection d'objets à mon service en tant qu'icollection (de contactinfo) avant que je passe l'objet, le changetraker a les bons états. Cependant, dans ma méthode, ce n'est pas le cas et tous les états ne sont pas modifiés.Passer des objets à des méthodes
Private Sub SaveExecute(ByVal param As Object)
Dim srv As Services.ContactInfoService = GetService(Of Services.IContactInfoService)()
If srv.SaveChanges(Me.ContactInfoCollection) Then
GetEvent(Of Events.EditCompletedEvent(Of ICollection(Of Model.ContactInfo))).Publish(Me.ContactInfoCollection)
End If
End Sub
Public Function SaveChanges(ByVal con As ICollection(Of ContactInfo)) As Boolean Implements IContactInfoService.SaveChanges
Using _context As New referee2Entities
For i As Integer = 0 To con.Count - 1
_context.ContactInfoes.Attach(con(i))
Next
_context.DetectChanges()
If _context.SaveChanges() > 0 Then
Return True
EnableNavigation()
End If
Return False
End Using
' Return Save()
End Function
Comme je l'ai dit au-dessus du Me.contacInfoCollection a le droit des États changetracking. Mais une fois qu'il est passé à srv.savechanges, il revient à non modifié. Je suis sûr que c'est quelque chose de stupide qui me manque ... toute la chose EF peut être source de confusion pour moi ...