在我的asp.net核心项目中,我有一个ReadingContext
类来自DbContext
。根据文档OnConfiguring
应该为创建的DbContext
的每个实例调用。
但在我的情况下,只有在调试时检查实例时才调用它。我在OnConfiguring
内有一个断点,但即使调用该方法也没有。
答案 0 :(得分:2)
根据文档,应该为创建的每个DbContext实例调用OnConfiguring。
我不知道您所引用的文档,但我确定在创建上下文时<{1}}运行并不能说明 。因为它没有。它在第一次实际上使用的情况下运行。这就是您在调试视图中开始检查上下文时立即看到方法调用的原因。当您在调试器中暂停断点时,调试器将永远不会跳转到另一个断点,即使代码被命中。
应该大量创建和处理上下文。因此,创建上下文必须尽可能轻量级。它的内部组件尽可能通过延迟初始化创建。
答案 1 :(得分:1)
以防其他人遇到此问题,我不得不使用空构造函数来调用OnConfiguring:
public ReadingContext() : base()
{
}
protected override void OnConfiguring(DbContextOptionsBuilder
optionsBuilder)
{
var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json",
optional: true, reloadOnChange: true);
config = builder.Build();
optionsBuilder.UseSqlServer(config.GetConnectionString
("ReadingContextConnection"));
}
答案 2 :(得分:0)
虽然这篇文章很旧,并且似乎与EF Core v1.0.0一起使用。即使添加了空构造函数,我也面临着EF Core v3.1.100的相同问题。除了OnConfiguring()我可以进入DbContext()和其他方法!
public SchoolContext() : base()
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Data Source=(local)\MYSQL;Initial Catalog=School; Integrated Security=True;");
}