У меня есть приложение MVC на основе Entity Framework, связанное с сервером SQL.
Это не рабочий сервер, поэтому я использую Entity Framework Code First и использую преимущества Code First / Удаление базы данных при изменении схемы.
У меня есть следующая строка подключения:
<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
- все работает как положено .... Затем я могу вернуться обратно и без проблем продолжить использование приложения.
Я действительно не понимаю этого, и мне было интересно, если кто-нибудь знает, что происходит?