首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dbContext不会更新

dbContext不会更新
EN

Stack Overflow用户
提问于 2021-06-14 13:13:01
回答 1查看 42关注 0票数 0

我有一个命令类作为CQRS工作流的一部分。它插入和更新几个不同的表,如下所示:

代码语言:javascript
复制
public class ClassName : IBusinessCommand<CommandRequest, CommandResult>

private readonly DatabaseContext _dbContext;

public ClassName(DatabaseContext dbContext)
{
    _dbContext = dbContext;
}


public async Task<CommandResult> ExecuteAsync(CommandRequest request, CancellationToken token)
{
    var user = _dbContext.Users.NoTracking()
        .Where(x => x.request.UserId);

    if (user != null)
    {
        var class = new Class
        {
             ClassID = 1,
             UserID = user.UserID,
             CreateDate = _clock.UtcNow
        }

        _dbContext.Classes.Add(class);
    }

    var seat = await FunctionThatGetsSeatRecord(token);

    seat.ModifyDate = _clock.UtcNow;
    seat.SeatsUsed++;
    seat.SeatsRemaining--

    return CommandResult.WithSuccess();
}

我们有一个名为CommandRunner的基类(它用于我们的所有命令,如下所示)。在此基类中,它调用ExecuteAsync函数(对于传入的任何类型参数),如下所示:

代码语言:javascript
复制
var command = _container.Resolve<IBusinessCommand<TData, TResult>>(
    new TypedParameter(typeof(IHoneyBeeDbContext), dbContext));
                    
var result = await command.ExecuteAsync(data, token);
await dbContext.SaveChangesAsync();
transaction.Commit();

以便对命令dbContext所做所有更改都作为单个事务保存和提交。我们的CQRS已经有了这个相同的基础设施一段时间了,它工作得很好。上面的类以前在不同的服务类中,我决定将其转换为我们的CQRS流,因此我将其转换为命令。由于我不能确定的原因(我已经考虑了几个小时),我可以让创建的类正确地添加到数据库中,但我不能让座位记录进行更新。我调试了整个类,并在整个流程中跟踪和检查了_dbContext变量,更新正确地显示在其中,但是当它被保存和提交时,它不会更新该变量的数据库(但它会更新类的数据库)。有没有人看到这里可能出了什么问题?

EN

回答 1

Stack Overflow用户

发布于 2021-06-14 13:44:48

您指出返回座位的函数使用NoTracking() ( AsNoTracking()的拼写错误?),它关闭了更改跟踪,因此EF对您对座位所做的更改视而不见。

不要对计划查询、更新和保存其中的实体的集合使用"No Tracking“

(在某些EF版本或情况下使用它可能不会带来任何好处,请参阅https://github.com/dotnet/efcore/issues/14366)

有关非跟踪实体的详细信息:What difference does .AsNoTracking() make?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67965092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档