Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 27080|Atsakyti: 0

[Šaltinis] Atnaujinkite savo duomenų bazę naudodami "Code First" perkėlimą

[Kopijuoti nuorodą]
Paskelbta 2018-06-07 15:56:58 | | |
Kodo pirmasis perkėlimas, galite atnaujinti kodo modelio pakeitimus į duomenų bazę, norėdami naudoti kodo pirmąjį perkėlimą, pirmiausia turite jį atidaryti:

Konsolėje Tools-NuGet Package Manager-Package Manager įveskite: Enable-Migrations -ContextTypeName CodeFirstExistingDB.DataModel.StoreContext, paspauskite Enter. (Atkreipkite dėmesį, kad turite apibrėžti kontekstą, kurį turite naudoti, nes autentifikavimo kontekstas sukuriamas automatiškai, kai kuriate projektą.) Kai tai padarysite, sukuriamas aplankas Migracijos, kuriame yra Configuration.cs klasė.

Šiuo metu reikia atlikti papildomą veiksmą, kad "Code First" veiktų, jei sukursite perkėlimą dabar, jis bandys įtraukti kontekstinį objektą į duomenų bazę, o perkėlimas nepavyks, nes lentelės Produktai ir Kategorijos jau yra duomenų bazėje. Taigi pirmiausia turime sukurti perkėlimą, kuris būtų inicijuotas į tuščią, o tada galime pridėti perkėlimą prie bet kokių modifikacijų.

PM> atnaujinimo duomenų bazė
Nurodykite vėliavėlę "-Verbose", kad peržiūrėtumėte paskirties duomenų bazei taikomus SQL sakinius.
Laukiančių aiškių perkėlimų nėra.
Automatinio perkėlimo taikymas: 201806070740457_AutomaticMigration.
System.Data.SqlClient.SqlException (0x80131904): duomenų bazėje jau yra objektas, pavadintas "Paskyra".
   System.Data.SqlClient.SqlConnection.OnError(SqlException išimtis, Bulio logikos pertraukaConnection, Action'1 wrapCloseInAction)
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException išimtis, Bulio logikos pertraukaConnection, veiksmas'1 wrapCloseInAction)
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Bulio logika skambintojasHasConnectionLock, Bulio logika 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, Bulio logikos asinchroninis, Int32 skirtasis laikas, Bulio logikos asyncWrite)
   In System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, Bulio logikos sendToPipe, Int32 skirtasis laikas, Bulio logika & usedCache, Bulio logika asyncWrite, Bulio logikos inRetry)
   In System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   In 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 tikslas, Func'3 operacija, TInterceptionContext interceptionContext, Veiksmas'3 vykdomas, Veiksmas'3 įvykdytas)
   System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand komanda, DbCommandInterceptionContext interceptionContext)
   In System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   System.Data.Entity.Migrations.DbMigrator.ExecuteSql(MigrationStatement migrationStatement, DbConnection ryšys, DbTransaction operacija, DbInterceptionContext interceptionContext)
   System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, DbTransaction transaction , DbInterceptionContext interceptionContext)
   System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection ryšys, DbTransaction operacija, DbInterceptionContext interceptionContext)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction transaction, DbInterceptionContext interceptionContext)
   In System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, DbConnection connection)
   adresu System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32. <ExecuteStatements>b__30()
   In System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1. <Execute>b__0()
   System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operacija)
   System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(veiksmo operacija)
   System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements, DbTransaction existingTransaction)
   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, Bulio logika pažeminimas, Bulio automatinis)
   System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Bulio logikos mažinimas)
   System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Bulio logika pažeminimas)
   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)
   In System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d()
   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()
   In System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:dcf676a8-d2b3-4232-89dd-35e15fb8160d
Klaidos numeris: 2714, būsena: 6, klasė: 16
Duomenų bazėje jau yra objektas, pavadintas "Klientas".

Jei susiduriate su aukščiau pateikta klaida, paketų tvarkyklės konsolėje įveskite Add-Migration InitialCreate -IgnoreChanges, kad sukurtumėte tuščią perkėlimą.

IgnoreChanges logotipas naudojamas siekiant užtikrinti, kad nieko nebūtų padaryta šiam perkėlimui. Tai padarius duomenų bazėje sukuriama perkėlimo lentelė, kuri yra duomenų bazės momentinė kopija prieš ją perkeliant.

Tada paketų tvarkyklės konsolėje įveskite update-database, kad atnaujintumėte inicijavimo perkėlimą į duomenų bazę.

Inicijavę perkėlimą, atnaujinkite duomenų bazę naudodami pirmąjį kodo perkėlimą:

Įtraukite stulpelį Descrip{filter}tion į lentelę Product ir nustatykite ilgį į 50, ([StringLength(50)]); Dabar pridėkite naują perkėlimą, kad atnaujintumėte duomenų bazės pakeitimus.

Paketų tvarkyklės konsolėje įveskite:Add-Migration add_product_descrip{filter}tion, (add_product_descrip{filter}tion) įtrauks failą į aplanką Perkėlimai, kad apibūdintų perkėlimą. Tada paketų tvarkyklės konsolėje įveskite:

atnaujinti duomenų bazę, naujas stulpelis bus įtrauktas į lentelę Produktai.





Ankstesnis:TCP prievado ryšio demonstracinė versija
Kitą:asp.net mvc naudoja vietinį rodinį RenderAction dinaminiams duomenims įkelti
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com