不使用 OnConfiguring(DbContextOptionsBuilder optionsBuilder) 无法构建 DbContext
Cannot construct DbContext without using OnConfiguring(DbContextOptionsBuilder optionsBuilder)
我正在开发一个 .NET CORE MVC 2.1 Web 应用程序,其中 DbContext 在 DLL (EF Core 2.1) 中声明。
我想使用 IServiceCollection.AddContext<GladContext
> 配置上下文,但如果我不这样做 ALSO 配置它 DbContext.OnConfiguring(DbContextOptionsBuilder optionsBuilder)
有人告诉我 没有为此 DbContext 配置数据库提供程序,尽管有一个构造函数采用 DbContextOptions<GladContext>
public GladContext(DbContextOptions<GladContext> options, IGladConnectionStringProvider connectionStringProvider) : base(options)
{
_connectionStringProvider = connectionStringProvider;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
GladOptionsBuilderHelper.ConfigureDefaultOptionsBuilder(optionsBuilder, _connectionStringProvider.ConnectionString);
base.OnConfiguring(optionsBuilder);
}
IGladConnectionStringProvider
是我当前的解决方法,如果不是这样也是可以接受的,因为我现在需要同时配置 DbContextOptionsBuilder
和 DbContextOptionsBuilder<GladContext>
public static class GladOptionsBuilderHelper
{
public const string GladMigrationsHistory = "__GladMigrationsHistory";
public static DbContextOptionsBuilder<GladContext> CreateDefaultTypedOptionsBuilder(string connectionString)
{
var optionsBuilder = new DbContextOptionsBuilder<GladContext>();
optionsBuilder
.UseSqlServer(connectionString, options =>
{
options.EnableRetryOnFailure();
options.MigrationsHistoryTable(GladMigrationsHistory, EntityBase.SchemaName);
})
.ConfigureWarnings(warnings => warnings.Throw(RelationalEventId.QueryClientEvaluationWarning));
return optionsBuilder;
}
public static void ConfigureDefaultOptionsBuilder(DbContextOptionsBuilder optionsBuilder, string connectionString)
{
optionsBuilder
.UseSqlServer(connectionString, options =>
{
options.EnableRetryOnFailure();
options.MigrationsHistoryTable(GladMigrationsHistory, EntityBase.SchemaName);
})
.ConfigureWarnings(warnings => warnings.Throw(RelationalEventId.QueryClientEvaluationWarning));
}
}
DbContextOptionsBuilder<GladContext>
用于IDesignTimeDbContextFactory<GladContext>
你能告诉我如何使用 AddContext
配置 GladContext
或如何从 DbContextOptionsBuilder<GladContext>
或相反的方式构建 DbContextOptionsBuilder
吗?
它的配置部分是对 IServiceCollection.AddDbContext() 的覆盖。
因此,当您调用 AddDbContext 时,只需将您的选项添加到括号中,如下所示:
var connectionString = "CONNECTION-STRING-HERE";
services.AddDbContext<MyContext>(o => o
.UseSqlServer(connectionString)
.UseQueryTrackingBehavior(true)
.EnableSensitiveDataLogging(true));
public class MyContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public MyContext(DbContextOptions<MyContext> options) : base(options)
{
}
}
我正在开发一个 .NET CORE MVC 2.1 Web 应用程序,其中 DbContext 在 DLL (EF Core 2.1) 中声明。
我想使用 IServiceCollection.AddContext<GladContext
> 配置上下文,但如果我不这样做 ALSO 配置它 DbContext.OnConfiguring(DbContextOptionsBuilder optionsBuilder)
有人告诉我 没有为此 DbContext 配置数据库提供程序,尽管有一个构造函数采用 DbContextOptions<GladContext>
public GladContext(DbContextOptions<GladContext> options, IGladConnectionStringProvider connectionStringProvider) : base(options)
{
_connectionStringProvider = connectionStringProvider;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
GladOptionsBuilderHelper.ConfigureDefaultOptionsBuilder(optionsBuilder, _connectionStringProvider.ConnectionString);
base.OnConfiguring(optionsBuilder);
}
IGladConnectionStringProvider
是我当前的解决方法,如果不是这样也是可以接受的,因为我现在需要同时配置 DbContextOptionsBuilder
和 DbContextOptionsBuilder<GladContext>
public static class GladOptionsBuilderHelper
{
public const string GladMigrationsHistory = "__GladMigrationsHistory";
public static DbContextOptionsBuilder<GladContext> CreateDefaultTypedOptionsBuilder(string connectionString)
{
var optionsBuilder = new DbContextOptionsBuilder<GladContext>();
optionsBuilder
.UseSqlServer(connectionString, options =>
{
options.EnableRetryOnFailure();
options.MigrationsHistoryTable(GladMigrationsHistory, EntityBase.SchemaName);
})
.ConfigureWarnings(warnings => warnings.Throw(RelationalEventId.QueryClientEvaluationWarning));
return optionsBuilder;
}
public static void ConfigureDefaultOptionsBuilder(DbContextOptionsBuilder optionsBuilder, string connectionString)
{
optionsBuilder
.UseSqlServer(connectionString, options =>
{
options.EnableRetryOnFailure();
options.MigrationsHistoryTable(GladMigrationsHistory, EntityBase.SchemaName);
})
.ConfigureWarnings(warnings => warnings.Throw(RelationalEventId.QueryClientEvaluationWarning));
}
}
DbContextOptionsBuilder<GladContext>
用于IDesignTimeDbContextFactory<GladContext>
你能告诉我如何使用 AddContext
配置 GladContext
或如何从 DbContextOptionsBuilder<GladContext>
或相反的方式构建 DbContextOptionsBuilder
吗?
它的配置部分是对 IServiceCollection.AddDbContext() 的覆盖。
因此,当您调用 AddDbContext 时,只需将您的选项添加到括号中,如下所示:
var connectionString = "CONNECTION-STRING-HERE";
services.AddDbContext<MyContext>(o => o
.UseSqlServer(connectionString)
.UseQueryTrackingBehavior(true)
.EnableSensitiveDataLogging(true));
public class MyContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public MyContext(DbContextOptions<MyContext> options) : base(options)
{
}
}