Почему DbContext кэширует данные, отправленные в базу данных? - PullRequest
0 голосов
/ 30 марта 2020

Я использую Blazor-сервер. Я создаю хранилище с entityframworkcore и sql.

UserRepository.cs:

public class UserRepository
{
    AppContext _db;
    public UserRepository(AppContext context)
    {
        _db = context;
    }

    public Task AddAsync(User user, CancellationToken cancellationToken = default)
    {
        cancellationToken.ThrowIfCancellationRequested();

        try
        {
            await _db.User.AddAsync(user, cancellationToken);
            int result = await _db.SaveChangesAsync(cancellationToken);
        }
        catch (Exception e)
        {
        }
    }
}

startup.cs:

services.AddSingleton<IUserRepository, UserRepository>();
services.AddDbContext<AppContext>(ServiceLifetime.Transient);

users.razor:

@inject IUserRepository userRepository

и

await userRepository.addAsync(user1);

В случае сбоя операции, связанной с «user1», мы отредактируем и повторно отправим user1 (user2)

await userRepository.addAsync(user2);

Если операция связана с «user1» завершается ошибкой, затем для операции «user2» тот же «user1» (userRepository.AddAsyn c (user2)), объект «user1» снова загружается в базу данных и снова возвращается к той же ошибке. добавляется в db.User .Local.Count каждый раз

Кроме того, иногда, когда я выбираю данные из базы данных, редактирую и обновляю их, они будут показывать информацию перед обновлением, если я получу те же данные снова

...