在單獨的程序集中遷移如何避免硬編碼連接字符串?

.net-core asp.net-core database-migration ef-migrations entity-framework-core

我正在編寫ASP.NET Core和Entity Framework Core應用程序,我想將我的數據訪問層存儲在單獨的程序集中,所以我遵循了這個教程: http//www.michael-whelan.net/ef-core-101-遷移功能於單獨的組件/

但我還想避免硬編碼連接字符串。我嘗試將其存儲在JSON配置文件或環境變量中並使用ConfigurationBuilder獲取它,但在使用命令行遷移工具dotnet ef migrations ,這些都不可用。有什麼方法可以解決這個問題嗎?我正在使用.NET Core和EF Core的1.0.1版本。

熱門答案

為了解決這個問題,我創建了一個類庫,僅用於從我的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);
        }
    }
}

然後我像這樣啟動ef工具命令:

  • 要添加遷移,請運行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

閱讀我的git hub項目的完整示例: https//github.com/aguacongas/chatle/tree/develop/src/ChatLe.Repository.Identity.SqlServer



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因