使用 Entity Framework 扩展批量方法时的上次修改属性

Last Modified properties when using Entity Framework Extensions bulk methods

我正在尝试使用 EFE 进行大型数据同步操作,因为它将涉及大量插入或大量更新,所以我使用了 BulkMerge 方法。

我们的旧方法涉及将所有内容都推入一个巨大的复杂数据图中,然后在我们的上下文中调用 SaveChanges。我们通过重写上下文的 SaveChanges 方法来处理 "Last Modified" 类型的属性,类似于另一个问题中投票最多(未接受)的答案:

Entity Framework/SQL2008 - How to Automatically Update LastModified fields for Entities?

EFE 的批量操作不使用 SaveChanges,因此现在这些属性保持为空。有没有办法在通过 EFE 保存时继续填写这些属性,而不必求助于数据库触发器?也许类似于 BulkOperationExecuting 事件,它可以让您检查正在操作的实体类型以及相应的 运行 一些代码?

既然您使用了 BulkMerge,为什么不简单地创建一个首先设置审计字段的扩展方法?

context.SetAuditField(list)
context.BulkMerge(list)

您还可以设置一些全局事件。这也许是您要寻找的更多内容

EntityFrameworkManager.PreBulkMerge = (context, entities) =>
{
    // ...code...
};