Entity Framework: Сохранить объект? - PullRequest
0 голосов
/ 01 июля 2010

Вот мой код:

Partial Public Class AppsEntities
Private Sub OnContextCreated()
    AddHandler Me.SavingChanges, AddressOf context_SavingChanges
End Sub
Private Shared Sub context_SavingChanges(ByVal sender As Object, ByVal e As EventArgs)
    For Each entry As ObjectStateEntry In DirectCast(sender, ObjectContext).ObjectStateManager.GetObjectStateEntries(EntityState.Modified)
        If Not entry.IsRelationship And entry.Entity IsNot Nothing Then
            For Each propName As String In entry.GetModifiedProperties()
                Dim audit As New History
                audit.action = "Changed information in " & propName & " to " & entry.CurrentValues(propName) & " from " & entry.OriginalValues(propName)
                audit.action_by = "dmackey"
                audit.action_date = Date.Now
                audit.extension_id = entry.CurrentValues.GetValue(1)
            Next

        End If


    Next
End Sub

Конечный класс

Как сохранить созданный мной новый объект?В LINQ я бы сделал что-то вроде:

datasource.object.insertonsubmit(audit)
datasource.SubmitChanges()

1 Ответ

0 голосов
/ 01 июля 2010

Вот мой окончательный код:

Partial Public Class AppsEntities
Private Sub OnContextCreated()
    AddHandler Me.SavingChanges, AddressOf context_SavingChanges
End Sub
Private Shared Sub context_SavingChanges(ByVal sender As Object, ByVal e As EventArgs)
    For Each entry As ObjectStateEntry In DirectCast(sender, ObjectContext).ObjectStateManager.GetObjectStateEntries(EntityState.Modified)
        If Not entry.IsRelationship And entry.Entity IsNot Nothing Then
            For Each propName As String In entry.GetModifiedProperties()
                Dim context As New AppsEntities()
                Dim audit As New History
                audit.action_note = "Changed information in " & propName & " to " & entry.CurrentValues(propName) & " from " & entry.OriginalValues(propName)
                audit.action_by = "dmackey"
                audit.action_date = Date.Now
                audit.extension_id = entry.CurrentValues.GetValue(0)
                context.AddToHistories(audit)
                context.SaveChanges()
            Next

        End If

    Next
End Sub

End Class

По сути, я должен был сделать следующее:

  • определите в моем ForEach новый экземпляр AppsEntities ("context"),
  • тогда мне пришлось добавить объект аудита в истории в настоящих AppEntities («контекст»).
  • Наконец, мне пришлось сообщить контексту («AppsEntities»), чтобы сохранить изменения в базе данных (перестаньте просто держать его в облаке EF).
...