在提交_unitOfWorkManager

时间:2019-04-05 02:06:39

标签: c# entity-framework unit-of-work aspnetboilerplate change-tracking

在我的服务(class MyService : AbpServiceBase)中,我正在尝试执行以下操作:

  • 将实体插入SQL并检索ID
  • 对外部系统进行REST调用并检索该systemId
  • 使用systemId更新原始实体中的字段

我得到的错误:

  

数据库操作预计会影响1行,但实际上会影响0行

[UnitOfWork(isTransactional: false)]
public async Task<Guid> CreateAsync(InfoDto myInfo)
{
    int? tenantId = _unitOfWorkManager.Current.GetTenantId();
    objInfo = await _infoRepository.InsertAsync(myInfo);
    newObjId = CreateNewIdentifier(tenantId);

    objInfo.ExternalIdentifier = newObjId;
    await _infoRepository.UpdateAsync(objInfo);
    return objInfo.Id;
}

2 个答案:

答案 0 :(得分:0)

您不需要UpdateAsyncobjInfo已被跟踪。

[UnitOfWork(isTransactional: false)]
public async Task<Guid> CreateAsync(InfoDto myInfo)
{
    int? tenantId = _unitOfWorkManager.Current.GetTenantId();
    objInfo = await _infoRepository.InsertAsync(myInfo);
    newObjId = CreateNewIdentifier(tenantId);

    objInfo.ExternalIdentifier = newObjId;
    // await _infoRepository.UpdateAsync(objInfo); // Remove this
    return objInfo.Id;
}

答案 1 :(得分:0)

一旦您知道答案,它总是非常简单...仅需注释即可。希望其他人也能从中受益。

[UnitOfWork(IsDisabled = true)]