1

物理目錄我下面的Pluralsight的MVC4教程後.mdf文件,我所有的演示項目是源通過Visual Studio在線目前我只在本地測試控制(不部署到Azure的或任何東西)。我正在開發一個利用EF5代碼優先模型的ASP.NET MVC4應用程序。我啓用了遷移,並且創建了以下類,我更新了種子方法並打開了自動遷移。無法附加變化的解決方案

internal sealed class Configuration : DbMigrationsConfiguration<MyProject.Models.MyProjectContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
    } 

    protected override void Seed(MyProject.Models.MyProjectContext context) 
    { 
     context.MyCollection.AddOrUpdate(v => v.attr1, 
      new MyProject() { attr1 = "MVC4", attr2 = 120}, 
      new MyProject() { attr1 = "LINQ", attr2 = 200}); 

     context.SaveChanges(); 
    } 
} 

我使用默認連接字符串與我的localDb實例與動態數據目錄(沒有硬編碼的路徑)。

"AttachDBFilename=|DataDirectory|\MyProject.Models.MyProjectContext.mdf" 

一切都按預期工作,直到我決定更改我的解決方案的物理目錄。我從默認的文件夾C:/user/documents/visual studio 2013/projectsD:/VisualStudio改變目錄到另一個存儲驅動器。我更新了我的源代碼管理的映射,並將項目拖到新的位置。

然而,當我跑我的項目,我不再有任何數據。

無法附加文件 'd:\的Visual Studio \ MyProject的\ MyProject的\ App_Data文件\ MyProject.Models.MyProjectContext.mdf' 數據庫'其實,我不能沒有收到以下錯誤消息運行update-database命令MyProject.Models.MyProjectContext」。

我試圖關閉自動遷移,重新運行「啓用的遷移」命令,並試圖硬編碼存儲.mdf文件的路徑,但它永遠無法「連接」到數據庫中。我知道該數據庫已經不存在,但我但如果我跑了update-database -force命令,如果系統沒有找到數據庫,它會創建一個新的。

有人可以協助我可以做些什麼來恢復App_Data文件夾中的.mdf文件嗎?

保留現有的數據是一個不是問題的問題,我只是需要有一個新的數據庫繼續出來工作的教程。

+0

曾經有段時間在那裏,這是當PC用戶沒有訪問SQL Server的開發機器上造成的。您是使用localDb還是命名的Sql實例? – Komengem

+0

@Komengem我正在使用localDb。 –

回答

2

有許多的選項,你可以嘗試一下,你的應用程序應該能夠再次運行。

選項1

在web.config文件重命名你的數據庫名稱,然後再次運行Update-Database

選項2

移除web.config文件下面的行,然後再次運行Update-Database

AttachDbFilename=|DataDirectory|DataContext.mdf

選項3

既然你已經啓用了遷移,刪除服務器資源管理器數據庫,並從對象資源管理器和文件夾app_data在你的應用程序的.mdf文件。然後再次運行Update-Database

我相信所有這些方案應能正常工作

+0

我改變了連接字符串中的數據庫名稱,它工作,謝謝。一旦我運行Update-Database命令,db的舊實例就從SSMS中消失了,並且出現了一個新的實例。我很好奇,爲什麼這工作雖然?數據庫實例的舊名稱是否緩存在某處,並且只有更改配置文件纔會觸發更改? –

+0

@JordanBrooker是的,當你在服務器資源管理器中刪除數據庫時(通常不夠),你也必須從對象資源管理器中刪除它,並擺脫舊的mdf文件。 – Komengem

+0

我很好奇的是,當我將源代碼管理映射從C:更改爲D時,我從C:中刪除了所有項目文件夾,包括包含我的.mdf文件的App_Data文件夾。如果舊文件不再存儲在磁盤上,IISExpress是否緩存它,或者遷移管道是否保留內部引用,而不是通過VS中的解決方案資源管理器公開的.mdf文件的內部引用? –