无需批量插入/更新即可使用efcore导入大量数据

时间:2019-07-25 07:18:26

标签: c# import .net-core ef-core-2.1

我当前正在使用efcore创建一个Importer。 我有一个带有产品信息的xml。我的进口商应该购买产品,更新/插入实体,然后将xml移至错误目录或存档目录。

我只更改了导入器上的一张表。导入后,exe也停止。因此,我想使ef core尽可能快,并禁用所有不需要的功能。数据的验证,外键约束和此类内容由进口商负责。

我知道,我可以使用批量插入。但是我想尝试一个没有批量插入的解决方案。我想通过一次交易插入/更新每个产品。我当前的解决方案是:

插入:

    try
    {
        _dbContext.ChangeTracker.AutoDetectChangesEnabled = false;
        return await Insert(entity);
    }
    finally
    {
        _dbContext.ChangeTracker.AutoDetectChangesEnabled = true;
    }

更新:

   try
    {
        _dbContext.ChangeTracker.AutoDetectChangesEnabled = false;

        entity = await Update(entity);

        _dbContext.Entry(entity).State = EntityState.Modified;
        await _dbContext.SaveChangesAsync();

        return entity;
    }
    finally
    {
        _dbContext.ChangeTracker.AutoDetectChangesEnabled = true;
    }

我将一直在启动时禁用自动检测。还有其他我可以禁用的功能吗?我想我也可以启用延迟加载。还有吗?

0 个答案:

没有答案