1

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

我们的旧方法是将所有内容放入一个巨大的复杂数据图中,然后在我们的上下文中调用 SaveChanges。我们通过覆盖我们上下文的 SaveChanges 方法来处理“上次修改”类型的属性,类似于其他问题中投票最多(不接受)的答案:

Entity Framework/SQL2008 - 如何自动更新实体的 LastModified 字段?

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

4

1 回答 1

0

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

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

您还可以设置一些全局事件。这可能是您正在寻找的更多

EntityFrameworkManager.PreBulkMerge = (context, entities) =>
{
    // ...code...
};
于 2018-02-14T13:54:27.300 回答