緣起
最近在研讀 Will 保哥 (黃保翕) 所著的 ASP.NET MVC 4 開發實戰 (連結為天瓏網路書店) 一書, 其第五章的內容, 主要以 Model 為主 (with Code First + Entity Framework).筆者發現在第 185 頁的指令裡, 都會出現下的錯誤; 所以查了一下資料 ...
System.Runtime.InteropServices.COMException (0x8004000C): 使用者取消 [無法儲存] 對話方塊 (發生例外狀況於 HRESULT: 0x8004000C (OLE_E_PROMPTSAVECANCELLED))
問題呈現
如以下的操作及錯誤訊息:PM> Update-Database -SourceMigration 201407170454421_InitialCreate -TargetMigration 201407170829018_AddUsernamePassword -Script 正在套用以程式碼為基礎的移轉: [201407170829018_AddUsernamePassword]。 正在套用以程式碼為基礎的移轉: 201407170829018_AddUsernamePassword。 System.Runtime.InteropServices.COMException (0x8004000C): 使用者取消 [無法儲存] 對話方塊 (發生例外狀況於 HRESULT: 0x8004000C (OLE_E_PROMPTSAVECANCELLED)) 於 EnvDTE.ItemOperations.OpenFile(String FileName, String ViewKind) 於 System.Data.Entity.Migrations.Utilities.DomainDispatcher.OpenFile(String fileName) 於 System.Data.Entity.Migrations.Utilities.DomainDispatcher.OpenFile(String fileName) 於 System.Data.Entity.Migrations.Extensions.ProjectExtensions.NewSqlFile(Project project, String contents) 於 System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0() 於 System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 使用者取消 [無法儲存] 對話方塊 (發生例外狀況於 HRESULT: 0x8004000C (OLE_E_PROMPTSAVECANCELLED)) PM> Update-Database -TargetMigration 201407170454421_InitialCreate -Script 正在還原移轉: [201407170829018_AddUsernamePassword]。 正在還原以程式碼為基礎的移轉: 201407170829018_AddUsernamePassword。 System.Runtime.InteropServices.COMException (0x8004000C): 使用者取消 [無法儲存] 對話方塊 (發生例外狀況於 HRESULT: 0x8004000C (OLE_E_PROMPTSAVECANCELLED)) 於 EnvDTE.ItemOperations.OpenFile(String FileName, String ViewKind) 於 System.Data.Entity.Migrations.Utilities.DomainDispatcher.OpenFile(String fileName) 於 System.Data.Entity.Migrations.Utilities.DomainDispatcher.OpenFile(String fileName) 於 System.Data.Entity.Migrations.Extensions.ProjectExtensions.NewSqlFile(Project project, String contents) 於 System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0() 於 System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 使用者取消 [無法儲存] 對話方塊 (發生例外狀況於 HRESULT: 0x8004000C (OLE_E_PROMPTSAVECANCELLED)) PM> Update-Database -TargetMigration $InitialDatabase -Script 沒有擱置中的程式碼移轉。 System.Runtime.InteropServices.COMException (0x8004000C): 使用者取消 [無法儲存] 對話方塊 (發生例外狀況於 HRESULT: 0x8004000C (OLE_E_PROMPTSAVECANCELLED)) 於 EnvDTE.ItemOperations.OpenFile(String FileName, String ViewKind) 於 System.Data.Entity.Migrations.Utilities.DomainDispatcher.OpenFile(String fileName) 於 System.Data.Entity.Migrations.Utilities.DomainDispatcher.OpenFile(String fileName) 於 System.Data.Entity.Migrations.Extensions.ProjectExtensions.NewSqlFile(Project project, String contents) 於 System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0() 於 System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 使用者取消 [無法儲存] 對話方塊 (發生例外狀況於 HRESULT: 0x8004000C (OLE_E_PROMPTSAVECANCELLED))
處理方式
找到一篇文章 EF5 Migration Update-Database -Script Error , 有提到安裝 SQL Server Data Tools for Visual Studio 2012 可以解決該問題.經實際執行後, 確定可解決該問題.
總結
終於找到了解決方式, 且看來可正常運作 ^^其中, 在這個過程裡, 因為有部份含有中文的錯誤訊息, 有時, 要找國外的相關資料, 還真的有點麻煩, 因此, 經由 Will 保哥的一篇文章 介紹好用網站:Microsoft | 語言入口網站 (微軟的翻譯對照表) 找到了 Microsoft 語言入口網站, 可以查到錯誤的中文訊息所對應的英文訊息. 不然, 可能真的要自行準備一個英文環境的 VM, 才能找到對應的英文訊息, 那就很累了 ...
參考文件
- EF5 Migration Update-Database -Script Error
- SQL Server Data Tools for Visual Studio 2012
- 介紹好用網站:Microsoft | 語言入口網站 (微軟的翻譯對照表)
- Microsoft 語言入口網站
.
沒有留言:
張貼留言