我开始在我的MVC应用程序中使用LightInject,但我对如何实现数据库上下文类的实例有点困惑。
我知道我可以通过构造函数注入它......但是如果我必须这样做,LightInject有什么意义。
此外,我的应用程序中的数据库上下文类已经实现了一个接口(IdentityDbContext(,因此为存储库创建另一个接口似乎不对。
数据库上下文类在构造函数中确实有以下内容:
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
所以我可以很容易地打电话:
_context.Create()
在构造函数中 - 但我的理解是,这将违背 SOLID 原则。
那么如何使用LightInject来创建数据库上下文类的实例呢?
您可以注册上下文,然后通过构造函数注入传递它:
在 ioc 配置文件中:
container.Register<Context, Context>(new PerScopeLifetime());
部分服务:
private readonly Context _context;
public BookService(Context context)
{
_context = context;
}
如果要使用接口,请注册一个接口并将其传递到所需的任何位置。