2

Я пишу ASP.NET Сердечник и приложение Entity Framework Core, и я хочу сохранить мой уровень доступа к данным в отдельной сборке, так что я следовал этому учебник: http://www.michael-whelan.net/ef-core-101-migrations-in-separate-assembly/Миграции в отдельной сборке, как избежать строки жесткого соединения?

Но я также хотел бы, чтобы избежать жесткого кодирования строки подключения. Я попытался сохранить его в конфигурационном файле JSON или в качестве переменной среды и получить его с помощью ConfigurationBuilder, но при использовании инструмента миграции командной строки dotnet ef migrations ни один из них не доступен. Есть ли способ решить эту проблему? Я использую версии 1.0.1 как .NET Core, так и EF Core.

ответ

2

Для решения этой проблемы я создаю библиотеку классов только для миграции с использованием DbContext, полученного из моего DbContext, но с жесткой подключенной строкой соединения.

using Microsoft.EntityFrameworkCore; 

namespace ChatLe.Repository.Identity.SqlServer 
{ 
    public class ChatLeIdentityDbContext: ChatLe.Models.ChatLeIdentityDbContext 
    { 
     public ChatLeIdentityDbContext() 
     { 
     } 

     protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
     { 
      optionsBuilder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=chatle;Trusted_Connection=True;MultipleActiveResultSets=true"); 
      base.OnConfiguring(optionsBuilder); 
     } 
    } 
} 

Затем я запускаю эф команды инструмента, как это:

  • Чтобы добавить миграционную запустить dotnet ef --startup-project {path to my startup project} migrations add login-activity --context ChatLe.Repository.Identity.SqlServer.ChatLeIdentityDbContext
  • Чтобы обновить базу данных кнопкуВыполнения dotnet ef --startup-project {path to my startup project} database update --context ChatLe.Repository.Identity.SqlServer.ChatLeIdentityDbContext

Читайте полный образец на моем мерзавце hub project: https://github.com/aguacongas/chatle/tree/develop/src/ChatLe.Repository.Identity.SqlServer

+0

Это то же самое, что и в я последовал за ним, но вместо того, чтобы выводить контекст, используется «IDbContextFactory <>». Он по-прежнему не решает проблему с строкой соединения жесткого кодирования. – micnyk

+0

Я согласен, но эта конкретная сборка используется только для разработчиков, чтобы генерировать миграцию, а не в вашей производственной среде, и на нее не ссылается ваше приложение. –