我当前正在使用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;
}
我将一直在启动时禁用自动检测。还有其他我可以禁用的功能吗?我想我也可以启用延迟加载。还有吗?