Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 27080|Відповідь: 0

[Джерело] Оновіть свою базу даних за допомогою міграції Code First.

[Копіювати посилання]
Опубліковано 07.06.2018 15:56:58 | | |
Код Перша Міграція — ви можете оновити зміни моделі у своєму коді в базу даних, щоб скористатися Code First Migration, спочатку потрібно її відкрити:

У консолі Tools-NuGet Package Manager-Package Manager введіть текст: Enable-Migrations -ContextTypeName CodeFirstExistingDB.DataModel.StoreContext, натисніть Enter. (Зверніть увагу, що потрібно визначити контекст, який потрібно використовувати, оскільки контекст автентифікації автоматично створюється під час створення проєкту.) Після завершення створюється папка Migrations, яка містить клас Configuration.cs.

На цьому етапі потрібен додатковий крок, щоб Code First працював: якщо ви створите міграцію зараз, він спробує додати контекстну сутність до бази даних, але міграція зазнає невдачі, оскільки таблиці продуктів і категорій вже існують у базі даних. Отже, спочатку потрібно створити міграцію, яка ініціалізована в порожній, а потім можна додати міграцію до будь-яких модифікацій.

PM> Оновлення бази даних
Вкажіть прапорець "-Verbose" для перегляду SQL-операторів, застосованих до цільової бази даних.
Жодних очікуваних явних міграцій.
Застосування автоматичної міграції: 201806070740457_AutomaticMigration.
System.Data.SqlClient.SqlException (0x80131904): Об'єкт з ім'ям 'Account' вже існує в базі даних.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   У System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds (String methodName, булевий async, Int32 timeout, булевий asyncWrite)
   У System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, булевий sendToPipe, тайм-аут Int32, Boolean&usedCache, булевий asyncWrite, булевий у Retry)
   У System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   У System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher. <NonQuery>b__0(DbCommand t, DbCommandInterceptionContext'1 c)
   У System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TinterceptionContext,TResult](TTarget target, Func'3 operation, TinterceptionContext перехопленняКонтекст, Дія'3 виконується, Дія'3 виконується)
   У System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand command, DbCommandInterceptionContext interceptionContext)
   У System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   У System.Data.Entity.Migrations.DbMigrator.ExecuteSql (MigrationStatement migrationStatement, DbConnection connection, DbTransaction transaction, DbInterceptionContext перехопленняКонтекст)
   У System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, dbTransaction transaction , DbПерехопленняКонтекст перехопленняКонтекст)
   У System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbTransaction transaction, DbПерехопленняКонтекст перехопленняКонтекст)
   У System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction transaction, dbInterceptionContext перехопленняКонтекст)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext перехопленняКонтекст)
   У System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection)
   на System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32. <ExecuteStatements>b__30()
   У System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1. <Execute>b__0()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operation)
   У System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
   У System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements, DbTransaction existingTransaction)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements)
   на System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable'1 migrationStatements)
   У System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable'1 operations, IEnumerable'1 systemOperations, булевий пониження версії, булеве авто)
   на System.Data.Entity.Migrations.DbMigrator.AutoMigrate (String migrationId, VersionedModel sourceModel, VersionedModel targetModel, булеве пониження)
   У System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, булевий пониження рейтингу)
   at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   на System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   на System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
   У System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d()
   at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   на System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   на System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   У System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update (String targetMigration)
   на System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   У System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:dcf676a8-d2b3-4232-89dd-35e15fb8160d
Номер помилки: 2714,Штат:6,Клас:16
Об'єкт із назвою «Account» вже існує в базі даних.

Якщо ви стикаєтеся з помилкою, введіть Add-Migration InitialCreate -IgnoreChanges у консолі менеджера пакетів, щоб створити порожню міграцію.

Логотип IgnoreChanges використовується, щоб гарантувати, що для цієї міграції нічого не робити. Це створює таблицю міграцій у базі даних, яка є знімком бази даних перед її міграцією.

Далі введіть update-database у консоль менеджера пакетів, щоб оновити ініціалізацію міграції до бази даних.

Після ініціалізації міграції оновіть базу даних за допомогою Code First Migration:

Додайте стовпець Descrip{filter}tion до таблиці Product і встановіть довжину на 50, ([StringLength(50)]); Тепер додайте нову міграцію для оновлення змін у базі даних.

У консолі Package Manager введіть:Add-Migration add_product_descrip{filter}tion, (add_product_descrip{filter}tion) додасть файл до папки Migrations для опису міграції. Далі, у консолі Package Manager, введіть:

оновлення бази даних, новий стовпець буде додано до таблиці Продукти.





Попередній:Демонстрація підключення TCP-порту
Наступний:asp.net mvc використовує локальний вигляд RenderAction для завантаження динамічних даних
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com