【问题标题】:Last Modified properties when using Entity Framework Extensions bulk methods使用实体框架扩展批量方法时的上次修改属性
【发布时间】:2018-02-15 00:31:40
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: entity-framework entity-framework-6 entity-framework-extensions


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 在这种情况下,全局事件是完美的。我的所有实体都派生自一个包含 Last Modified 属性的基类,因此无论我使用哪种特定实体类型,我都可以设置它们。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    相关资源
    最近更新 更多