gpt4 book ai didi

c# - 包管理器控制台如何知道要使用哪个连接字符串?

转载 作者:行者123 更新时间:2023-12-04 12:28:58 24 4
gpt4 key购买 nike

我有一个网站应用程序。取决于 IsDemoSite在我的 appsettings.json 文件中设置,应用程序使用两个不同的数据库连接字符串之一。 (一个用于我的主站点,另一个用于我们的演示站点。)
我还有一个包含所有 Entity Framework 模型和迁移的类库。
在包管理器控制台中,我将默认项目设置为类库。
Default project setting in Package Manager Console
然后,我可以运行 add-migrationupdate-database该类库上的命令。但关键是:IsDemoSite我的主应用程序的设置决定了这些命令使用的数据库。
包管理器控制台究竟是如何根据当前设置知道我的主应用程序使用什么连接字符串的?我没有运行主应用程序。包管理器控制台不使用主应用程序作为默认项目。它怎么知道要使用哪个连接字符串?

最佳答案

当你运行和 add-migrationupdate-database命令,包管理器控制台将查找您的解决方案的启动项目并将其用作这些命令的“入口点”。
可能在你的Startup.cs里面类,您使用存储在 appsettings.json 中的连接字符串注入(inject)了数据库上下文。
我相信你有这样的事情:

string connectionString;

bool isDemoSite = configuration.GetValue<string>("IsDemoSite");

if(isDemoSite)
connectionString = configuration.GetConnectionString("mainSite");
else
connectionString = configuration.GetConnectionString("demoSite");

services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(connectionString));
add-migrationupdate-database使用相同的代码来确定它将针对哪个数据库执行,就像您的应用程序被执行以允许此命令运行一样。
这也是您需要在启动项目中安装一些 EntityFramework 包的原因。

关于c# - 包管理器控制台如何知道要使用哪个连接字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68144107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com