[英]ASP.NET MVC 4 and EF5: how to use enable-migrations / update-database
我似乎在使用enable-migrations和update-database的基本功能時遇到了問題。 在將項目復制到另一台PC之前,我已經啟用了項目。
我使用的是VS 2010 Ultimate,SQL Server 2008 R2 Express,MVC 4和EF5。
在我的Configuration類中,我有:
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(RecruitDB.ModelContext.RecruitModelContext context)
{
context.Statuses.AddOrUpdate(
s => s.ProgressStatus,
new Status { ProgressStatus = "Interview Arranged" },
new Status { ProgressStatus = "Candidate Rejected" },
new Status { ProgressStatus = "Candidate Accepted" },
new Status { ProgressStatus = "Job Offer Made" },
new Status { ProgressStatus = "Job Offer Accepted" },
new Status { ProgressStatus = "Job Offer Declined" }
);
// etc
在我的web.config中,我有EF設置指向數據庫Recruitment。
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
<connectionStrings>
<add name="RecruitModelContext" providerName="System.Data.SqlClient" connectionString="Server=.\SQLEXPRESS;Initial Catalog=Recruitment;Integrated Security=True;MultipleActiveResultSets=true" />
</connectionStrings>
為什么我的數據庫是通過RecruitDB.ModelContext.RecruitModelContext的名稱創建的?
有沒有辦法阻止這種情況發生?
我嘗試使用Enable-Migrations -Force重置,並在覆蓋后重寫我的配置文件。
有時我會得到正確命名的Recruitment數據庫並開始正常使用該應用程序。 隨后,我無法運行Seed方法。
我最終不得不刪除數據庫並重新開始。
我假設您使用EF Code First?
似乎EF默認為“按慣例的代碼優先連接”,這解釋了為什么DbContext的完全限定名稱用作數據庫名稱。 (在這里閱讀更多內容: http : //msdn.microsoft.com/en-us/data/jj592674 )
首先,嘗試將連接字符串的名稱設置為DbContext類的完全限定名稱,即“RecruitDB.ModelContext.RecruitModelContext”。
如果此操作失敗,請嘗試以下步驟:
Enable-Migrations
命令 Add-Migration
命令並指定ConnectionStringName參數 Update-Database
命令 以下是一個很好的EF遷移命令參考: http : //coding.abel.nu/2012/03/ef-migrations-command-reference/#Enable-Migrations
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.