簡體   English   中英

EF Core - 創建沒有連接字符串的遷移

[英]EF Core - Create a migration without connection string

我一直在研究適合這個問題的多個問題、教程和示例。

如果我在創建第一個初始遷移時不知道我的連接字符串怎么辦? 鑒於我有機會在實例化上下文時設置連接字符串,例如:

var connection = @"Server=(localdb)\mssqllocaldb;Database=JobsLedgerDB;Trusted_Connection=True;ConnectRetryCount=0";
var optionsBuilder = new DbContextOptionsBuilder<BloggingContext>();
optionsBuilder.UseSqlServer(connection);

using (var context = new BloggingContext(optionsBuilder.Options))
{
  // do stuff
}

文檔中所述..

如果您需要一個連接字符串來運行遷移,那么對於那些沒有連接字符串的情況(從用戶帳戶獲取連接字符串的租戶數據庫),您如何運行初始遷移?

您是否創建了一個虛擬連接字符串來創建遷移.. 對我來說似乎很狡猾。 我希望對此有一些意見。

您可以實現IDesignTimeDbContextFactory ,它將在設計時代替您的主機構建器使用。 UseSqlServer 現在具有無參數重載。

它看起來像這樣,並且必須與 db 上下文或啟動項目在同一個程序集中:

public class MyAppDbContextFactory: IDesignTimeDbContextFactory<MyAppDbContext>
{
    public MyAppDbContext CreateDbContext(string[] args)
    {
        var optionsBuilder = new DbContextOptionsBuilder<MyAppDbContext>();
        optionsBuilder.UseSqlServer();
            
        return new MyAppDbContext(optionsBuilder.Options);
    }
}

可以在此處找到更多詳細信息: https : //docs.microsoft.com/en-us/ef/core/cli/dbcontext-creation?tabs=dotnet-core-cli#from-a-design-time-factory

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM