Я написал интерфейс IRequiredColumns со свойствами CreatedOn, ModifiedOn и DeletedOn, которые реализует каждый объект. Затем я создал этот неполный класс для контекста:
Partial Public Class Context
Public Overrides Function SaveChanges(ByVal options As System.Data.Objects.SaveOptions) As Integer
For Each entry As ObjectStateEntry In ObjectStateManager.GetObjectStateEntries(EntityState.Added Or EntityState.Modified Or EntityState.Deleted)
If TypeOf (entry.Entity) Is IRequiredColumns Then
Dim entity As IRequiredColumns = CType(entry.Entity, IRequiredColumns)
Select Case entry.State
Case EntityState.Added
entity.CreatedOn = Now
Case EntityState.Modified
entity.ModifiedOn = Now
Case EntityState.Deleted
entry.ChangeState(EntityState.Modified)
entity.DeletedOn = Now
End Select
End If
Next
Return MyBase.SaveChanges(options)
End Function
End Class
Это отлично работает для меня!
Хорошо, но как я могу настроить объект для изменения? objectstateentry.state только для чтения, я получил это до сих пор: еще если (entry.State == System.Data.EntityState.Deleted) { MyClass Ref = MyClass entry.Entity; Ref.SysDeleted = DateTime.Now; Ref.SysDeletedBy = Имя пользователя; } – k0ni
С [Context.ObjectStateManager.ChangeObjectState] (http://msdn.microsoft.com/en-us/library/system.data.objects.objectstatemanager.changeobjectstate.aspx) –
Спасибо, но почему, черт возьми, У меня есть этот метод? «System.Data.Objects.ObjectStateManager» не содержит определения для «ChangeObjectState» – k0ni