我有一个使用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);
}
现在,您的Web应用程序仅需要引用您的业务/服务层,而不再直接依赖EntityFramework。
关于asp.net-core - 带有 Entity Framework 核心的数据层中来自appsettings.json的ConnectionString,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38356990/