我正在使用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>();
}
}
开发此最佳方法是什么?