C# OnModelCreating从未执行过

C# OnModelCreating从未执行过,c#,entity-framework-6,C#,Entity Framework 6,我首先使用EF6(6.1.3)代码,最近注意到由于某种原因,没有调用DbContext类中的OnModelCreating重写。我试图从默认约定中删除ManyToManyCascadeDeleteConvention,但由于某种原因,它不起作用。当我在OnModelCreating中设置断点时,我注意到它从未进入该例程 我检查了这个问题-,不,我没有edmx文件。这里先输入代码 public class DashboardDbContext : DbContext { public Da

我首先使用EF6(6.1.3)代码,最近注意到由于某种原因,没有调用DbContext类中的OnModelCreating重写。我试图从默认约定中删除ManyToManyCascadeDeleteConvention,但由于某种原因,它不起作用。当我在OnModelCreating中设置断点时,我注意到它从未进入该例程

我检查了这个问题-,不,我没有edmx文件。这里先输入代码

public class DashboardDbContext : DbContext
{
    public DashboardDbContext()
        : base("DashboardDbContext")
    {
        Console.WriteLine("hi world");    // breakpoint DOES get hit here
    }    

    //...

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);    // breakpoint DOESN'T get hit here

        this.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
        // more stuff...
    }

它是懒洋洋的。是的,first access会触发数据库的创建(或者说,尝试创建),我可以在SQL Profiler中看到各种DDL命令正在执行。但是它忽略了
OnModelCreating
覆盖,该覆盖应该防止约束语句末尾的级联删除子句。(编辑——打字)呃——找到了答案,结果证明与任何逻辑上的东西都无关。基本上,有人将特定于域的数据库集添加到了ASP.Net Identity使用的(单独的)上下文中,该上下文首先被实例化,并且是错误的真正来源。所以它并不是在忽略这个覆盖——它是在对应该只存在于这个上下文中的对象进行覆盖之前爆炸出来的。它是延迟加载的。是的,first access会触发数据库的创建(或者说,尝试创建),我可以在SQL Profiler中看到各种DDL命令正在执行。但是它忽略了
OnModelCreating
覆盖,该覆盖应该防止约束语句末尾的级联删除子句。(编辑——打字)呃——找到了答案,结果证明与任何逻辑上的东西都无关。基本上,有人将特定于域的数据库集添加到了ASP.Net Identity使用的(单独的)上下文中,该上下文首先被实例化,并且是错误的真正来源。所以它并不是在忽略这个覆盖——它是在对只应该存在于这个上下文中的对象进行覆盖之前爆炸出来的。