我有一个基于实体框架的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