Light在MVC中注入数据库上下文

时间:2014-12-23 13:19:06

标签: c# asp.net-mvc entity-framework light-inject

我开始在我的MVC应用程序中使用LightInject,但是我对如何实现DB Context类的实例感到有点困惑。

我知道我可以通过构造函数注入它......但是如果我必须这样做,LightInject的重点是什么。

此外,我的应用程序中的DB Context类已经实现了一个接口(IdentityDbContext),因此它似乎不适合为存储库创建另一个接口。

DB Context类在构造函数中有这个:

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }

所以我可以很轻松地打电话:

 _context.Create()

在构造函数中 - 但我的理解是,这将违反SOLID原则。

那么如何使用LightInject创建数据库上下文类的实例?

1 个答案:

答案 0 :(得分:0)

您可以注册上下文,然后使用构造函数注入传递它:

在您的ioc配置文件中:

container.Register<Context, Context>(new PerScopeLifetime());

一些服务:

private readonly Context _context;

public BookService(Context context)
{
    _context = context;
}

如果您想使用界面,请注册一个界面并将其传递到任何您想要的地方。