我使用 UnitOfWork 模式和实体框架来使用下面的代码公开 DbContext。所以我的问题是,用 Ninject 获取 Context 实例是否可行?
工作单位
public interface IUnitOfWork<C> : IDisposable
{
int Commit();
C GetContext { get; set; }
}
工作单位
public class UnitOfWork<C> : IUnitOfWork<C> where C : DbContext
{
private bool _disposed;
private readonly C _dbContext = null;
public UnitOfWork()
{
GetContext = _dbContext ?? Activator.CreateInstance<C>();
}
public int Commit()
{
return GetContext.SaveChanges();
}
public C GetContext
{
get;
set;
}
[...]
现在在NinjectWebCommon
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IUnitOfWork<MyDbContext>>().To<UnitOfWork<MyDbContext>>().InRequestScope();
kernel.Bind<IEmployeeRepository>().To<EmployeeRepository>();
}
如果不使用_dbContext ?? Activator.CreateInstance<C>();
,是否可以通过Ninject获取DbContext实例?