Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 27080|Répondre: 0

[Source] Mettez à jour votre base de données avec la migration Code First

[Copié le lien]
Publié sur 07/06/2018 15:56:58 | | |
Code First Migration, vous pouvez mettre à jour vos modifications du modèle dans votre code vers la base de données, pour utiliser Code First Migration, il faut d’abord l’ouvrir :

Dans la console Tools-NuGet Package Manager-Package Manager, type : Enable-Migrations -ContextTypeName CodeFirstExistingDB.DataModel.StoreContext, appuyez sur Entrée. (Notez que vous devez définir le contexte à utiliser car le contexte d’authentification est automatiquement créé lors de la création du projet.) Une fois cela fait, un dossier Migrations est créé, contenant une classe Configuration.cs.

À ce stade, il y a une étape supplémentaire nécessaire pour que Code First fonctionne : si vous créez une migration maintenant, elle essaiera d’ajouter l’entité contextuelle à la base de données, et la migration échouera car les tables Produits et catégories existent déjà dans la base de données. Nous devons d’abord créer une migration initialisée en vide, puis nous pouvons ajouter une migration à toute modification.

PM > Mise à jour - Base de données
Spécifiez le drapeau « -Verbose » pour voir les instructions SQL appliquées à la base de données cible.
Aucune migration explicite en attente.
Application de la migration automatique : 201806070740457_AutomaticMigration.
System.Data.SqlClient.SqlException (0x80131904) : Un objet nommé « Account » existe déjà dans la base de données.
   at System.Data.SqlClient.SqlConnection.OnError (Exception SqlException, 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)
   Dans 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, asynchrone booléen, timeout Int32, asyncWrite booléen)
   In System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   Dans System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   Dans System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher. <NonQuery>b__0(DbCommandeT t, DbCommandInterceptionContexte'1 c)
   Dans System.Data.Entity.Infrastructure.Interception.InternalDispatcher'1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget cible, opération Func'3, TInterceptionContexte interceptionContext, Action'3 exécutée, Action'3 exécutée)
   Dans System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommandcommand, DbCommandInterceptionContexteInterceptionContexteInterceptionContexte)
   Dans System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   Dans System.Data.Entity.Migrations.DbMigrator.ExecuteSQL (MigrationStatementMigrationStatement, DbConnection connection, DbTransaction transaction, DbInterceptionContext interceptionContexte)
   Dans System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSQL (MigrationStatement migrationStatement, DbConnection connection, DbTransaction transaction , DbDInterceptionContexteInterceptionContexte)
   Dans System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, connexion DbConnection, transaction DbTransaction, DbInterceptionContexteInterceptionContexte)
   Dans System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable'1 migrationStatements, DbTransaction transaction, DbInterceptionContext interceptionContexte)
   Dans System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable'1 migrationStatements, connexion DbConnection, DbInterceptionContext interceptionContexte)
   Dans System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal (IEnumerable'1 migrationStatements, connexion DbConnection, DbInterceptionContexteInterceptionContexteInterceptionContexte)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable'1 migrationStatements, connexion DbConnection)
   sur System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass32. <ExecuteStatements>b__30()
   Dans System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1. <Execute>b__0()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func'1 operation)
   Dans System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
   Dans System.Data.Entity.Migrations.DbMigrator.ExecuteStatements (IEnumerable'1 migrationStatements, DbTransactionExistingTransaction)
   Dans System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable'1 migrationStatements)
   sur System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable'1 migrationStatements)
   Dans System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable'1 operations, IEnumerable'1 systemOperations, Boolean rétrogradation, auto booléen)
   at System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, rétrogradation booléenne)
   Dans System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(String migrationId, VersionedModel sourceModel, VersionedModel targetModel, Boolean rétrogradation)
   at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable'1 pending Migrations, chaîne targetMigrationId, chaîne lastMigrationId)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable'1 pendingMigrations, Chaîne targetMigrationId, Chaîne lastMigrationId)
   sur System.Data.Entity.Migrations.DbMigrator.UpdateInternal(String targetMigration)
   Dans System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClasse. <Update>b__d()
   sur System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action doitSucceedToKeepDatabase)
   sur System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action doitSucceedToKeepDatabase)
   sur System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   Dans System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
   sur System.Data.Entity.Migrations.Design.OutilsFacade.UpdateRunner.RunCore()
   Dans System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:dcf676a8-d2b3-4232-89dd-35e15fb8160d
Numéro d’erreur : 2714, État : 6, Classe : 16
Un objet nommé « Account » existe déjà dans la base de données.

Si vous rencontrez l’erreur ci-dessus, tapez Add-Migration InitialCreate -IgnoreChanges dans la console Package Manager pour créer une migration vide.

Le logo IgnoreChanges est utilisé pour s’assurer qu’aucune mesure n’est faite lors de cette migration. Cela crée une table de migrations dans la base de données, qui sert d’instantané de la base avant sa migration.

Ensuite, entrez update-database dans la console du gestionnaire de paquets pour mettre à jour la migration d’initialisation vers la base de données.

Après l’initialisation de la migration, mettez à jour la base de données en utilisant Code First Migration :

Ajoutez la colonne Descrip{filter}tion à la table Product et fixez la longueur à 50, ([StringLongueur(50)] ; Ajoutez maintenant une nouvelle migration pour mettre à jour les modifications apportées à la base de données.

Dans la console du gestionnaire de paquets, saisissez :Add-Migration add_product_descrip{filter}tion, (add_product_descrip{filter}tion) ajoutera un fichier au dossier Migrations pour décrire la migration. Ensuite, dans la console Gestionnaire de paquets, tapez :

Mise à jour, la nouvelle colonne sera ajoutée à la table Produits.





Précédent:Démonstration de connexion de communication par port TCP
Prochain:asp.net mvc utilise la vue locale RenderAction pour charger des données dynamiques
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com