VS 2013 MVC5代碼第一個項目。EF6遷移(LocalDb)更新數據庫登錄失敗
我正在通過ASP.NET Getting Started with EF6 using MVC5教程來了解最新的更改,並且遇到了遷移問題。 在第一個模塊的數據庫使用創建的數據庫初始化:
<contexts>
<context type="ContosoUniversity.DAL.SchoolContext, ContosoUniversity">
<databaseInitializer type="ContosoUniversity.DAL.SchoolInitializer, ContosoUniversity" />
</context>
</contexts>
與此連接字符串:
<connectionStrings>
<add name="SchoolContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=ContosoUniversity1;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
</connectionStrings>
這工作得很好。在代碼優先遷移和部署模塊遷移設置。初始值將被註釋掉和數據庫的名稱更改爲ContosoUniversity2:
<connectionStrings>
<add name="SchoolContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=ContosoUniversity2;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
</connectionStrings>
當update-database
然後從包裝程序管理器控制檯運行失敗,出現錯誤消息:
Cannot open database "ContosoUniversity2" requested by the login. The login failed.
Login failed for user 'MyMachine\MyUser'.
我已經用相同的用戶和相同的結果重複運行這兩種情況。如果我改變Initial Catalog
到AttachDbFilename=|DataDirectory|\ContosoUniversity2;
update-database
成功(數據庫目前正處於項目的應用程序,數據文件夾,而用戶的根目錄配置文件):
<connectionStrings>
<add name="SchoolContext" connectionString="Data Source=(LocalDb)\v11.0; AttachDbFilename=|DataDirectory|\ContosoUniversity2;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
</connectionStrings>
你雖然部署時使用Initial Catalog
。生產connectionString在Web.Release.Config中單獨設置,以便可行。
問題是爲什麼需要修復,爲什麼Initial Catalog
與update-database
在開發方面的工作?
更新1:
的問題是不是與遷移,但與LocalDb
MyUser
在SQLExpress
(sysadmin
)全部權利。我可以在MyUser
下登錄SSMS
並完全管理DBs
。我跑了幾次測試。儘管我爲本教程創建了初始數據庫,如MyUser
,但如果我從頭開始重建應用程序並使用databaseInitialzer
,它現在會引發登錄失敗錯誤。如果我在Admin
下運行VS
,databaseInitialzer
和update-database
都可以正常工作。如果我那麼DBs
從Admin's
用戶配置文件根目錄複製到MyUser's
然後運行VS
,還不如Admin
,登錄時爲MyUser
兩個databaseInitialzer
和update-database
然後工作,如果DB
是之前已有。
如果我改變connectionString
到AttachDbFileName
和運行或者databaseInitialzer
和update-database
MyUser
可以在App_Data
文件證明MyUser
有DB
創建權限創建DB
。 MyUser
顯然對其自己的用戶配置文件的根有充分的權利。 LocalDb實現有一些問題。
有沒有人有任何關於這個問題的見解?
你有SQL Server Management Studio嗎?如果是,請嘗試使用Windows身份驗證連接到兩個數據庫。如果你可以(沒有訪問錯誤),這是代碼相關的東西。如果沒有,這是localdb中需要更改的配置設置。 –