我有一個基於實體框架的MVC應用程序鏈接到SQL服務器。爲什麼設置「DropCreateDatabaseIfModelChanges」時Entity Framework無法登錄到SQL Server?
這不是一個生產服務器,所以我使用實體框架代碼優先,並在模式更改時利用代碼優先/刪除數據庫。
我有以下連接字符串:
<add name="MyDbContext"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=appdb;User Id=xxx;Password=yyy;"
providerName="System.Data.SqlClient" />
我有EF/SQL的各種問題,到最後,我創建了一個新的用戶與sysadmin
服務器角色,我創建了數據庫appdb
,設置新用戶的默認數據庫爲appdb
,在User Mapping
下,我給用戶db_owner
權限(在用戶和默認模式下,它表示dbo)。
無論如何,一切都按預期工作後,我這樣做 - 數據庫被刪除/重新創建所需的表。
但是,我現在已經改變了我的課程。使用DropCreateDatabaseIfModelChanges
導致一個黃色畫面Unable to login to SQL Server with user:xxx
錯誤和SQL服務器日誌顯示Login failed for user 'xxx'. Reason: Password did not match that for the login provided. [CLIENT: <local machine>]
如果我啓動上調試應用程序,它顯示以下內容: This operation requires a connection to the 'master' database. Unable to create a connection to the 'master' database because the original database connection has been opened and credentials have been removed from the connection string. Supply an unopened connection.
如果我改變從DropCreateDatabaseIfModelChanges
到DropCreateDatabaseAlways
- 一切正常預計....我可以改回來,並繼續使用應用程序沒有問題。
我真的不明白這一點,並想知道是否有人知道發生了什麼?
這工作得很好! + 1 /答案。非常感謝......儘管有人想爲自己學習問題而不是爲每個問題提出問題(儘管目前似乎沒有這樣的方式!),但我不認爲你可以解釋一下這個問題/究竟是什麼錯誤? – Wil