如何制作自己的删除方法以防止数据真正被删除? 我想在删除日期时间字段而不是正常删除时设置它。
我读过有关覆盖submitchanges函数的内容,但我没有让它工作
答案 0 :(得分:4)
处理SavingChanges
,浏览上下文中的已删除项目,将其状态更改为已修改,并修改相关字段。
答案 1 :(得分:1)
我编写了一个接口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
这对我很有用!
答案 2 :(得分:0)
如果您不知道如何覆盖删除功能,您可以为数据库中的每个表创建一个ON DELETE触发器,该触发器不会删除,但会设置datetime字段。