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