1
Entity Frameworks SaveChanges()関数のオーバーライド関数内で元のエンティティと変更されたエンティティをシリアル化しようとしていますが、オブジェクト型が何であるかを推測しようとしていますそれをXmlSerializerオブジェクトのパラメータとして渡すことができます。Entity Framework ObjectStateEntryからオブジェクト型を取得
Public Overrides Function SaveChanges() As Integer
ChangeTracker.DetectChanges()
Dim ctx As ObjectContext = DirectCast(Me, IObjectContextAdapter).ObjectContext
Dim objectStateEntryList As List(Of ObjectStateEntry) = ctx.ObjectStateManager.
GetObjectStateEntries(EntityState.Added Or EntityState.Modified Or EntityState.Deleted).ToList()
For Each Entry As ObjectStateEntry In objectStateEntryList
If Not Entry.IsRelationship Then
Dim objectType As String = Entry.Entity.GetType.Name.Split("_").First
Select Case Entry.State
Case EntityState.Modified
For Each propertyName As String In Entry.GetModifiedProperties()
Dim ser As New XmlSerializer(Entry.Entity.GetType)
Dim sw As New IO.StringWriter
ser.Serialize(sw, Entry.OriginalValues)
Dim serializedObject As String = sw.ToString
Next
End Select
End If
Next
Return MyBase.SaveChanges()
End Function
私は上記を試みたが、役に立たなかった。
完璧、よろしくお願いいたします。その延長として、元のオブジェクトと新しいオブジェクトをシリアル化できる形式で取得するにはどうすればよいですか? –
@JacobMason私は答えを編集しました。 – user2216
私は "オブジェクトはIConvertibleを実装する必要があります。" –