【问题标题】:ConnectionString from appsettings.json in Data Tier with Entity Framework Core来自带有实体框架核心的数据层中 appsettings.json 的 ConnectionString
【发布时间】:2016-11-16 08:30:57
【问题描述】:

我有一个使用 Entity Framework Core 在 ASP.NET Core 上构建的新应用程序。该应用程序具有 UI、模型、业务和数据层。在以前的 ASP.NET 版本中,您可以在 web.config 中设置连接字符串,默认情况下它可以在引用的层中使用。这在 ASP.NET Core 中与 appsettings.json (或其他配置选项)的情况似乎不同?关于如何实现的任何想法?我在数据层中配置了 dbcontext,但我目前正在对连接字符串进行硬编码。

我看到的所有示例都在 startup.cs 的 UI 层中配置了 dbcontext。这是我试图避免的。

问题Here 跑题了。

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc entity-framework-core


    【解决方案1】:

    您可以轻松地将 IServiceCollection 的扩展方法添加到您的业务/服务层中,并使用它来注册自己的依赖项。然后在启动时,您只需调用服务层上的方法,而无需在您的 Web 应用程序中引用任何 EntityFramework。

    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.DependencyInjection.Extensions;
    
    namespace your.service.layer
    {
        public static class MyServiceCollectionExtensions
        {
            public static IServiceCollection AddMyServiceDependencies(this IServiceCollection services, string connectionString)
            {
                 services.AddEntityFrameworkSqlServer()
                .AddDbContext<YourDbContext>((serviceProvider, options) =>
                options.UseSqlServer(connectionString)
                       .UseInternalServiceProvider(serviceProvider)
                       );
                 return services;
            }
        }
    
    }
    

    启动:

    using your.service.layer;
    
    public void ConfigureServices(IServiceCollection services)
    {
        var connectionString = Configuration.GetConnectionString("EntityFrameworkConnectionString");
        services.AddMyServiceDependencies(connectionString);
    }
    

    现在您的 Web 应用只需要对您的业务/服务层的引用,它不直接依赖于 EntityFramework。

    【讨论】:

    • 这就是我要找的。谢谢!
    • 不知何故我得到了错误。并非 AddMyServiceDependencies 中的所有代码路径都返回值
    • 我已经更新了我的答案,因为我没有在示例方法中返回
    • @DaniilT。我现在不是在找工作,如果你想要一个在 asp.net 核心中的分层应用程序示例,请查看我的 cloudscribe 项目github.com/joeaudette/cloudscribe
    • @Konrad 老实说,我不使用 update-database 命令。我的应用在 Program.cs 中有代码,可以在应用启动时应用任何新的迁移。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2020-05-30
    • 2020-03-27
    • 2021-07-14
    相关资源
    最近更新 更多