![](/img/trans.png)
[英]EF code-first PluralizingTableNameConvention for ONE DbSet
[英]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之外的所有表均已創建 。
我做了以下事情,沒有任何運氣:
是否可以“跟蹤”什么dbContext.Database.Create();
是否,如果實際上確實出錯了?
我還注意到,“ missing”表是唯一具有復合PK的表 ,這可能是一個問題嗎?
更新:
當我看一下SQL Profiler
,發現此注釋表示表已被忽略。 不幸的是,它沒有說明原因:
-- Ignoring entity set with defining query: [MDRModelStoreContainer].[tblRelatedPatient]
這是edmx中映射的表:
原始表沒有主鍵 。
即使edmx在設計器中顯示了Composite Primary Key
,但直到我實際更新原始數據庫並刷新edmx時,表還是無法從edmx模型中成功創建,這很奇怪。
dbContext.Database.Create();
成功創建表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.