我有一个使用OWin托管的asp.net webapi,我使用ninject进行DI。以下是我注入DbContext
的方法:
kernel.Bind<IAuthRepository>().To<AuthRepository>();
kernel.Bind<AuthDbContext>().ToSelf().InRequestScope();
我有一个存储库类,我使用上下文:
private AuthDbContext _ctx { get; set; }
public AuthRepository(AuthDbContext ctx)
{
_ctx = ctx;
}
我在存储库中有这种方法可以更改一些数据:
var res = await _ctx
.Clients
.FirstOrDefaultAsync(clientEntity => clientEntity.UserRef.Id == p);
//do the modification
_ctx.Entry(res).State = EntityState.Modified;
_ctx.SaveChanges();
return res;
它在db中正确保存数据,但是当我调用另一个动作并获取保存的实体之后,我发现更改不在上下文中。
public async Task<Client> FindClientById(Guid clientId)
{
return await _ctx
.Clients
.FirstOrDefaultAsync(clientEntity => clientEntity.Id == clientId);
}