为什么Entity Framework不加载更新的数据?

时间:2019-04-28 11:31:56

标签: entity-framework asp.net-web-api2 unity-container dbcontext

我正在使用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>();
    }
}

开发此最佳方法是什么?

0 个答案:

没有答案