在使用_unitOfWorkManager提交之前更新新实体

问题描述 投票:0回答:2

在我的服务(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;
}
c# entity-framework unit-of-work aspnetboilerplate change-tracking
2个回答
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;
}

0
投票

一旦你知道答案,它总是那么简单......所需要的只是一个注释。希望其他人也能从中受益。

[UnitOfWork(IsDisabled = true)]

© www.soinside.com 2019 - 2024. All rights reserved.