gpt4 book ai didi

c# - 在 Entity Framework Core 中创建迁移时如何配置 DbContext?

转载 作者:太空狗 更新时间:2023-10-29 20:13:18 28 4
gpt4 key购买 nike

在使用 Entity Framework 的迁移命令时,是否可以配置/引导依赖注入(inject)?

Entity Framework Core 支持 DbContext 子类的依赖注入(inject)。此机制包括允许在 DbContext 之外配置数据访问。

例如,以下内容会将 EF 配置为使用从 config.json

检索到的连接字符串持久保存到 SQL 服务器
ServiceCollection services = ...

var configuration = new Configuration().AddJsonFile( "config.json" );
services.AddEntityFramework( configuration )
.AddSqlServer()
.AddDbContext<BillingDbContext>( config => config.UseSqlServer() );

但是,迁移命令不知道要执行此代码,因此 Add-Migration 将因缺少提供程序或连接字符串而失败。

迁移可以通过覆盖 DbContext 子类中的 OnConfiguring 来指定提供者和配置字符串,但是当其他地方需要不同的配置时,这会妨碍工作.最终让我的迁移命令和我的代码同时工作变得非常复杂。

注意:我的 DbContext 位于与使用它的入口点不同的程序集中,并且我的解决方案有多个启动项目。

最佳答案

如果您正在寻找为迁移配置上下文的解决方案,您可以在您的 DBContext 类中使用它:

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
var connectionString = configuration.GetConnectionString("DbCoreConnectionString");
optionsBuilder.UseSqlServer(connectionString);
}
}

请记住安装这两个包以具有 SetBasePathAddJsonFile 方法:Microsoft.Extensions.Configuration.FileExtensions

Microsoft.Extensions.Configuration.Json

关于c# - 在 Entity Framework Core 中创建迁移时如何配置 DbContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29110241/

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