Первая миграция кода Entity Framework не работает при проверке подлинности базы данных SQL с помощью приложения Azure Active Directory - PullRequest
0 голосов
/ 02 мая 2019

Сначала я использую код Entity Framework с переносом БД для нашего SQL Server Azure. Недавно я попытался использовать аутентификацию Azure Active Directory, используя эту статью https://docs.microsoft.com/en-us/azure/sql-database/sql-database-aad-authentication-configure. Я передаю SQL-соединение с Entity Framework, созданным с использованием токена доступа к приложению. Все работает как положено, но перенос БД. При переносе БД я получаю следующую ошибку. Любая помощь по этому вопросу приветствуется.

System.InvalidOperationException HResult = 0x80131509 Сообщение = Эта операция требует подключения к основной базе данных. Невозможно создать соединение с базой данных «master», поскольку исходное соединение с базой данных было открыто, а учетные данные были удалены из строки соединения. Поставьте неоткрытое соединение. Источник = EntityFramework.SqlServer Трассировки стека: в System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection (DbConnection sqlConnection, Действие 1 act) at System.Data.Entity.SqlServer.SqlProviderServices.CreateDatabaseFromScript(Nullable 1 commandTimeout, DbConnection sqlConnection, Строка createDatabaseScript) в System.Data.Entity.SqlServer.SqlProviderServices.DbCreateDatabase (соединение DbConnection, Nullable 1 commandTimeout, StoreItemCollection storeItemCollection) at System.Data.Entity.Core.Common.DbProviderServices.CreateDatabase(DbConnection connection, Nullable 1 commandTimeout, StoreItemCollection storeItemCollection) в System.Data.Entity.Core.Objects.ObjectContext.CreateDatabase () в System.Data.Entity.Migrations.Utilities.DatabaseCreator.Create (соединение DbConnection) в System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists (действие mustSucceedToKeepDatabase) в System.Data.Entity.Migrations.DbMigrator.Update (String targetMigration) в System.Data.Entity.MigrateDatabaseToLatestVersion 2.InitializeDatabase(TContext context) at System.Data.Entity.Internal.InternalContext.<>c__DisplayClassf 1.b__e () в System.Data.Entity.Internal.InternalContext.PerformInitializationAction (Действие действия) в System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization () в System.Data.Entity.Internal.LazyInternalContext.b__4 (InternalContext c) в System.Data.Entity.Internal.RetryAction 1.PerformAction(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action 1 действие) в System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase () в System.Data.Entity.Internal.InternalContext.Initialize () в System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType (Type entityType) в System.Data.Entity.Internal.Linq.InternalSet 1.Initialize() at System.Data.Entity.Internal.Linq.InternalSet 1.get_InternalContext () в System.Data.Entity.Internal.Linq.InternalSet 1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) at System.Data.Entity.Internal.Linq.InternalSet 1.Add (Object entity) в System.Data.Entity.DbSet`1.Add (сущность TEntity)

Внутреннее исключение 1: SqlException: сбой входа для пользователя ''.

1 Ответ

0 голосов
/ 02 мая 2019

Просматривая эту документацию , я думаю, что шаг Изменить строку подключения необходимо выполнить дважды, один раз для базы данных приложения и другой для доступа к базе данных master, поскольку вы не можете просто перейти к мастеру без повторной аутентификацииили используемым учетным данным не были предоставлены разрешения для доступа к базе данных master.

Я думаю, что ключевым является включение следующей строки после назначения токена, его отключения и запуска приложения в ожидаемом порядке.

Database.SetInitializer<MyDatabaseContext>(null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...