Почему Entity Framework не загружает обновленные данные? - PullRequest
0 голосов
/ 28 апреля 2019

Я работаю с Web Api 2. Я создал проект ASP.Net Web API 2 и подключил его к базе данных с помощью Entity Framework.

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

Я использовал следующий код, который инициализирует экземпляры с Unity:

  _container.RegisterType<MabnaERPContext>(new PerRequestLifetimeManager());

Следующая строка была моим кодом до того, как я сделал изменения:

  _container.RegisterType<MabnaERPContext>(new HierarchicalLifetimeManager ());

И это некоторый код хранилища:

public class RepScuUser : RepositoryBase<scuUser>, IDaScuUser
{
    public RepScuUser(MabnaERPContext context) : base(context)
    {
    }

    /// <summary>
    /// Gets scuUser by userName and password
    /// </summary>
    /// <param name="userName">Username of user</param>
    /// <param name="password">Password of user</param>
    /// <returns>scuUser</returns>
    public async Task<scuUser> GetByUserPassAsync(string userName, string password)
    {
        var result = await (from su in Context.scuUser
                                //join scdd in Context.scuCmpyDurDB on su.CmpyDurDBID equals scdd.ID
                                //join scd in Context.scuCmpyDur on scdd.CmpyDurID equals scd.ID
                                where su.Name == userName && su.Password == password
                                select su).Include(x=>x.scuCmpyDurDB.scuCmpyDur.scuCompany).FirstOrDefaultAsync();

        return result;
    }
  }

, и это мой RepositoryBase класс:

public abstract class RepositoryBase<TEntity> : IDa<TEntity> where TEntity : class
{
    protected MabnaERPContext Context { get; }

    protected DbSet<TEntity> DbSet { get; }
    public virtual IQueryable<TEntity> DbSetNoTracking => DbSet.AsNoTracking();

    protected RepositoryBase(MabnaERPContext context)
    {
        Context = context;
        DbSet = context.Set<TEntity>();
    }
}

Какая лучшая практика для разработки этого?

...