加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-core – 来自带有Entity Framework Core的Data Tier中的

发布时间:2020-12-16 07:25:38 所属栏目:asp.Net 来源:网络整理
导读:我有一个新的应用程序,我正在使用Entity Framework Core构建ASP.NET Core.该应用程序具有UI,模型,业务和数据层.在以前的ASP.NET版本中,您可以在web.config中设置连接字符串,默认情况下它将在引用的层中可用.在使用appsettings.json(或其他配置选项)的ASP.NET
我有一个新的应用程序,我正在使用Entity Framework Core构建ASP.NET Core.该应用程序具有UI,模型,业务和数据层.在以前的ASP.NET版本中,您可以在web.config中设置连接字符串,默认情况下它将在引用的层中可用.在使用appsettings.json(或其他配置选项)的ASP.NET Core中,这似乎不是相同的情况?有关如何实现这一点的任何想法?我在数据层中配置了dbcontext,但我目前正在对连接字符串进行硬编码.

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

问题Here得到了主题.

解决方法

您可以轻松地将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);
}

现在,您的网络应用仅需要对您的业务/服务层的引用,并且它不直接依赖于EntityFramework.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读