在asp.net Identity 2.0分离的上下文中引用



我尝试将我的一个API项目分成三个不同的层。API

  • 数据访问(repos + uow)
  • <
  • 数据实体/gh>

    API使用Asp.net Identity 2.0和我安装的示例代码,刚好可以使用OAuth授权。

    然而,当我进行这种分离时,有时会得到一个错误,告诉我需要从第一层引用第三层(实体)。我不知道为什么。那会破坏分居的目的,对吧?

    例如,当我尝试替换这一行(从API层在Startup.Auth.cs, ConfigureAuth方法)

    app.CreatePerOwinContext(ApplicationDbContext.Create);
    

    app.CreatePerOwinContext(uow.CreateDbContext()) 
    

    返回ApplicationDbContext的新实例的方法。

    我希望上下文从我的第二层返回,我的UnitOfWork所在的地方(它反过来从数据层获得ApplicationDbContext)。

    有人能解释一下这是怎么回事吗?

  • 要解决您的问题,您需要开始使用接口和任何di框架。如果您想开始使用AutoFac (https://code.google.com/p/autofac/wiki/WebApiIntegration),我可以在这里为您提供代码。

    当您通过Nuget将autofacc安装到解决方案中时。将这部分代码添加到Global.asax.cs文件中。

    protected void Application_Start()
    {
        ...
        SetupAutoFac();
        ...
    }
    private static void SetupAutoFac()
    {
        var builder = new ContainerBuilder();
        builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
        var container = builder.Setup();
        var resolver = new AutofacWebApiDependencyResolver(container);
        GlobalConfiguration.Configuration.DependencyResolver = resolver;
    }
    

    在你的bl层中创建这部分代码:

    public static class AutoFacConfiguration
    {
        public static IContainer Setup(this ContainerBuilder builder)
        {
            REGISTER ALL YOUR SERVICES AND UOW HERE
            return builder.Build();
        }
    }
    

    在此之后,你可以将每个服务接口注入到你的ApiControllers中,而WebAPi将只引用到你的bl层或你放置所有接口的层。

    相关内容

    • 没有找到相关文章

    最新更新