Global.asax中的MVC,Entity Framework DBContext连接

时间:2013-02-07 23:20:22

标签: entity-framework dependency-injection dbcontext

我正在使用Entity Framework和Dependency Injection。要在控制器中获取数据库结果,我正在做: -

    private IJobSeekerRepository repository;

    public JobseekersController(IJobSeekerRepository Repository)
    {
        repository = Repository;
    }

然后做一些像......

     return View(repository.GetAllJobSeekers);

我正在尝试按照教程从数据库中设置Global.asax文件中的Thread.CurrentPrinciple。我现在一直在努力将数据库中的记录存入全局文件。

如何设置类似于上面'public JobseekersController'的构造函数?

这就是我所拥有的,但它在'repository.GetJobSeekersRoles'上抛出错误 - 对象引用没有设置为对象的实例

    public IJobSeekerRepository repository;

    void Application_AuthenticateRequest(object sender, EventArgs e)
    {
        if (Request.IsAuthenticated)
        {
            var ctx = HttpContext.Current;

               string[] roles = repository.GetJobSeekersRoles(ctx.User.Identity.Name);
               var newUser = new GenericPrincipal(ctx.User.Identity, roles);
               ctx.User = Thread.CurrentPrincipal = newUser;
        }
    }

1 个答案:

答案 0 :(得分:2)

只需使用DependencyResolver对象(msdn),因为它内置于MVC中:

var repository = DependencyResolver.Current.GetService<IJobSeekerRepository>();

假设您在应用开始时设置DependencyResolver