Отладка Entity Framework «Автоматическая миграция не была применена, потому что это приведет к потере данных» - PullRequest
0 голосов
/ 04 марта 2019

У меня есть веб-приложение, которое завершается ошибкой с сообщением об ошибке.Я хочу знать, как определить причину ошибки, поскольку в трассировке стека нет деталей.

Изначально я использовал скрипт из Update-Database -v -f -script и применил его к БД.Это дало ошибку, которую я мог тогда исправить.После исправления ошибки я снова запустил скрипт, и он запустился без ошибок.

Если я откатил базу данных и попытался сделать то же самое в коде, я получил сообщение об ошибке без подробностей.

Сведения о приложении:

Веб-приложение, ориентированное на .Net Framework 4.5.2.

Сначала код.

AutomaticMigrationsEnabled = true
AutomaticMigrationDataLossAllowed  = false

EntityFramework 6.2.0

Трассировка стека:

   at System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Boolean downgrading)
   at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   at System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
   at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse.<Update>b__d()
   at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   at System.Data.Entity.MigrateDatabaseToLatestVersion`2.InitializeDatabase(TContext context)
   at System.Data.Entity.Internal.InternalContext.<>c__DisplayClassf`1.<CreateInitializationAction>b__e()
   at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)
   at System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()
   at System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c)
   at System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()
   at System.Data.Entity.Internal.InternalContext.Initialize()
   at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
   at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
   at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
   at System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()
   at System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync[TSource](IQueryable`1 source, Expression`1 predicate, CancellationToken cancellationToken)
   at System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync[TSource](IQueryable`1 source, Expression`1 predicate)
   at Microsoft.AspNet.Identity.EntityFramework.UserStore`6.<GetUserAggregateAsync>d__67.MoveNext()

--- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение --

   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNet.Identity.TaskExtensions.CultureAwaiter`1.GetResult()
   at Microsoft.AspNet.Identity.UserManager`2.<FindAsync>d__80.MoveNext()

--- Конец трассировки стека от предыдущего местоположения, где было сгенерировано исключение ---

   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at MiPlanAdmin.Providers.ApplicationOAuthProvider.<GrantResourceOwnerCredentials>d__3.MoveNext() in C:\SourceCode\MiPlan\MiPlanAdmin\MiPlanAdmin\Providers\ApplicationOAuthProvider.cs:line 46

Спасибо.

...