gpt4 book ai didi

c# - 从 IDesignTimeDbContextFactory 访问 App.config

转载 作者:行者123 更新时间:2023-12-05 07:14:08 24 4
gpt4 key购买 nike

为了通过 Entity Framework Core 执行迁移,我创建了一个设计时工厂,如 this article 中所述.目前,我已经实现了这个,这似乎有效:

public StudentContextCreateDbContext(string[] args)
{
string connectionString = "Data Source=localhost;Initial Catalog=MyCatalog;Integrated Security=True;";
var optionsBuilder = new DbContextOptionsBuilder<StudentContext>();
optionsBuilder.UseSqlServer(connectionString);
return new StudentContext(optionsBuilder.Options);
}

但是,我不想使用硬编码的连接字符串。我试过这一行,从 App.config 获取它:

string connectionString = ConfigurationManager.ConnectionStrings["Local"].ConnectionString;

它返回完全相同的连接字符串,只是来自 App.config 文件。它在实际应用程序中有效,但当我在设计时工厂中使用它时,我得到一个 System.NullReferenceException

如何在我的应用程序和设计时工厂之间共享相同的连接字符串,而无需手动维护两者?

最佳答案

EF Core 在设计时实例化数据库上下文,例如添加迁移或更新数据库,以收集有关实体的详细信息并映射它们。但是您的项目的 App.config 无法使用 ConfigurationManager 访问,因为 EF 核心设计时是另一个具有自己的应用程序设置的应用程序。

从我的回答中找到解决方案: https://stackoverflow.com/a/65221508/2818667

关于c# - 从 IDesignTimeDbContextFactory<T> 访问 App.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59969648/

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