2016-07-13 2 views
1

У меня есть новое приложение, которое я основано на ядре ASP.NET с ядром Entity Framework Core. Приложение имеет пользовательский интерфейс, модель, бизнес и уровень данных. В предыдущих версиях ASP.NET вы могли установить строку подключения в файле web.config, и по умолчанию она будет доступна в ссылочных уровнях. Это не похоже на тот же случай в ASP.NET Core с appsettings.json (или другими параметрами конфигурации)? Любая идея о том, как это делается? У меня есть dbcontext, настроенный в слое данных, но я сейчас жестко кодирую строку подключения.ConnectionString из appsettings.json в ядре данных с платформой Entity Framework Core

Все примеры, которые я вижу, содержат dbcontext, настроенный в слое пользовательского интерфейса в startup.cs. Это то, чего я пытаюсь избежать.

Вопрос Here вышел из темы.

ответ

7

Вы можете легко добавить метод расширения IServiceCollection в свой уровень бизнес/услуг и использовать его для регистрации своих зависимостей. Затем в процессе запуска вы вызываете метод на уровне сервиса без ссылки на 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.

+0

Это то, что я искал. Спасибо! –

+0

отлично, можете ли вы отметить его как принятый ответ? –

+0

Как-то я получаю ошибку. Не все значения возвращаемого кода возвращают значение в AddMyServiceDependencies –

Смежные вопросы