- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经阅读了多篇关于如何使用 Entity Framework 实现审计日志的文章。我目前在 DbContext
的 SaveChanges
方法中嵌入了审计逻辑。请记住,下面的代码是 EF4/5 实现,我正准备更新到 EF6。
namespace Database {
public class AuditDetails {
public string RemoteHost { get; set; }
public string RevisionUser { get; set; }
public string RevisionNotes { get; set; }
public DateTime RevisionDateTime { get; set; }
}
public class MyContext : DbContext {
// ... Unrelated overrides here ... //
public void SaveChanges(AuditDetails auditDetails) {
var saveCount = ProcessConcurrency();
var items = ChangeTracker.Entries<MyEntity>().ToList();
if (saveCount <= 0 || items == null || !items.Any() || auditDetails == null) return;
foreach (var item in items.Select(entityEntry => entityEntry.Entity).Where(i => i != null)) {
// ... create audit log using AuditDetails values ... //
}
// ... and call base.SaveChanges() ... //
}
}
}
所以问题是:
SavingChanges
事件处理程序是否有好处?或者可能拆分功能以同时使用两者?AuditDetails
信息是否妨碍使用 SavingChanges
?SaveChanges
设置一个覆盖,它接受在交易中使用的 bool 参数。添加它会如何改变解决方案?总结:
SaveChanges
以及您何时/为什么更愿意使用 SavingChanges
事件处理程序?最佳答案
我认为在大多数情况下这并不重要。我可以想到三种情况,需要两种选择之一:
SaveChanges
应该被完全覆盖,所以 base.SaveChanges
不应该被调用:只有覆盖才能做到这一点。
另一个类涉及保存更改时发生的事情:只有事件可以做到这一点。 (或者我应该说:一个事件显然是可供选择的模式)。
您想选择性地扩展 SaveChanges
。根据我的口味,通过一些参数在构造函数中激活事件比使用 if (option)
开始覆盖更清晰,其中 option
必须已存储为成员变量.
在所有其他情况下,我总是使用覆盖。该事件需要先挖出ObjectContext
(因为它是ObjectContext.SavingChanges
)。覆盖是硬连线的。事件订阅总是会以某种方式破坏代码维护。
关于c# - SavingChanges 事件与 SaveChanges 覆盖之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27869600/
我已经阅读了多篇关于如何使用 Entity Framework 实现审计日志的文章。我目前在 DbContext 的 SaveChanges 方法中嵌入了审计逻辑。请记住,下面的代码是 EF4/5 实
好吧,这可能是一个新手问题,但是我如何/在哪里可以订阅 ObjectContext.SavingChanges 事件,例如在这个 post 中提到的. 我的演示应用程序中只有两个相关类:“Countr
我正在使用实体上下文中的 SavingChanges 事件在 Entity Framework 4.0 中实现一些通用日志记录。 我想记录有关任何创建/更新和删除记录的详细信息,包括正在更改的记录的
我正在将 ObjectContext 的 SavingChanges 事件处理为时间戳条目。要求是,如果只有 ColumnA 发生了变化,我不会在条目发生变化时为其添加时间戳。 有没有办法可以找出在此
我是一名优秀的程序员,十分优秀!