EF 6 Code-First 不创建 table

EF 6 Code-First not creating one table

我对使用 EF Code-first 来创建新数据库有点不适应。我们有一个现有的数据库并成功地使用了模型优先方法。现在我想现有模型在 运行-time 像这样创建一个新数据库:

public class DatabaseInitializer : IDatabaseInitializer<MDREntities>
{    
    public void InitializeDatabase(MDREntities dbContext)
    {
        if (dbContext.Database.Exists())
        {
            // Delete the existing database
            dbContext.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction, "ALTER DATABASE [" + dbContext.Database.Connection.Database + "] SET SINGLE_USER WITH ROLLBACK IMMEDIATE");
            dbContext.Database.Delete();
        }
        // Create new database
        dbContext.Database.Create();

        // Add initial data
        addMasterData(dbContext);

        // Commit changes.
        dbContext.SaveChanges();
    }
}

以上 运行 已成功创建,我的 table 已创建,除了 1

我已经完成了以下操作但没有任何运气:

是否有可能 "trace" dbContext.Database.Create(); 做了什么,如果确实出了问题?

我也注意到 "missing" table 是唯一一个 复合 PK,这会是个问题吗?

更新:

当我查看 SQL Profiler 时,我发现这条评论说 table 被忽略了。不幸的是它没有说明原因:

-- Ignoring entity set with defining query: [MDRModelStoreContainer].[tblRelatedPatient]

这是在 edmx 中映射的 table:

原来的table没有主键

即使 edmx 在设计器中显示 Composite Primary Key,但直到我实际更新原始数据库并刷新 edmx 后,table 才从 edmx 模型成功创建,奇怪.. .

  • 向底层添加 PK table(原始映射到 edmx)
  • 刷新 edmx 模型
  • 现在 dbContext.Database.Create(); 创建 table 成功。