[英]EF core - Creating a migration for a database without a connection string and in another class library
[英]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.