簡體   English   中英

EF 6 Code-First不創建一個表

[英]EF 6 Code-First not creating one table

我對使用EF Code-first有點困惑,無法創建一個新數據庫。 我們有一個現有數據庫,並成功使用了“模型優先”方法。 現在,我想以現有模型在運行時創建一個新數據庫,如下所示:

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();
    }
}

上面的操作成功完成, 除1之外的所有表均已創建

我做了以下事情,沒有任何運氣:

  • 該表確實存在於edmx模型中。
  • 模型.tt文件確實為表生成類。
  • 上下文.tt文件確實為該表生成了一個DbSet。
  • 我已經刪除了edmx模型,並從數據庫中重新創建了它。

是否可以“跟蹤”什么dbContext.Database.Create(); 是否,如果實際上確實出錯了?

我還注意到,“ missing”表是唯一具有復合PK的表 ,這可能是一個問題嗎?

更新:

當我看一下SQL Profiler ,發現此注釋表示表已被忽略。 不幸的是,它沒有說明原因:

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

這是edmx中映射的表:

在此處輸入圖片說明

原始表沒有主鍵

即使edmx在設計器中顯示了Composite Primary Key ,但直到我實際更新原始數據庫並刷新edmx時,表還是無法從edmx模型中成功創建,這很奇怪。

  • 向基礎表添加PK(原始映射到edmx)
  • 刷新edmx模型
  • 現在dbContext.Database.Create(); 成功創建表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM