无法在上下文中保持更改

问题描述 投票:1回答:1

我正在开发一个简单的3层MVC应用程序,并且无法使上下文更改持续存在。这是我的代码:

控制器:

    [HttpPost]
    public IActionResult Register(UserDto user)
    {
        userService.Register(user);
        return Ok("profile");
    }

服务:

    public void Register(UserDto userDto)
    {
        User user = new User();
        user.FirstName = userDto.FirstName;
        user.LastName = userDto.LastName;
        user.Type = (UserType) userDto.Type;
        unitOfWork.UserRepository.AddAsync(user);
    }

存储库:

    public Repository(ApplicationDbContext dbContext)
    {
        this.dbContext = dbContext;
        this.dbSet = dbContext.Set<T>();
    }

    public async Task AddAsync(params T[] entities)
    {
        await dbSet.AddRangeAsync(entities);
        await SaveChanges();
    }

    private async Task SaveChanges()
    {
        await dbContext.SaveChangesAsync();
    }

使用调试器,我发现dbset.AddRangeAsync确实将我在请求中设置的实体添加到了dbContext中。问题是,在下一个请求时,该实体从dbContext中消失了,并且也没有出现在我的数据库中。有人可以解释一下我在做什么错吗?

c# asp.net-mvc entity-framework n-tier-architecture
1个回答
1
投票

您的add方法是异步的。调用此方法的其他方法必须是异步的。

 public async Task Register(UserDto userDto)
    {
        User user = new User();
        user.FirstName = userDto.FirstName;
        user.LastName = userDto.LastName;
        user.Type = (UserType) userDto.Type;
       await unitOfWork.UserRepository.AddAsync(user);
    }



    [HttpPost]
    public async Task<IActionResult> Register(UserDto user)
    {
       await userService.Register(user);
        return Ok("profile");
    }
© www.soinside.com 2019 - 2024. All rights reserved.