2 votes

Il y a déjà un objet nommé 'cars' dans la base de données.

Je développe un projet MVC en utilisant le code en premier. Je crée ma base de données en utilisant le code en premier comme vous pouvez le voir ici :

public class DataContext:DbContext
{
    public DataContext()
        : base("DefaultConnection")
    {
        this.Configuration.LazyLoadingEnabled = false;
        this.Configuration.ProxyCreationEnabled = false;

        Database.SetInitializer(
            new MigrateDatabaseToLatestVersion()
            );
    }
    public DbSet Members { get; set; }
    public DbSet Traffics { get; set; }
    public DbSet Cars { get; set; }
    public DbSet Validations { get; set; }
    public DbSet Logs { get; set; }
    public DbSet Files { get; set; }
}

J'ai téléchargé mon projet sur le serveur de l'entreprise, et ils ont utilisé mon projet et ont saisi certaines valeurs dans la base de données, donc après un certain temps j'ai changé certaines colonnes dans la base de données, et j'ai ajouté normalement dans la conception SQL à la table de base de données, alors j'ai aussi changé une partie de mon code, et maintenant quand je télécharge mon fichier publié j'obtiens cette erreur :

Un objet portant le nom 'Cars' existe déjà dans la base de données.

Remarque : Je ne peux pas supprimer la base de données car j'ai des données à l'intérieur, comme je l'ai dit j'ai ajouté les nouvelles colonnes à la base de données, mais mon application ne peut pas se connectet à cette base de données.

Partie migration :

public class MigrationsConfiguration : DbMigrationsConfiguration
{
    public MigrationsConfiguration()
    {
        this.AutomaticMigrationDataLossAllowed = true;
        this.AutomaticMigrationsEnabled = true;
    }
}

1voto

Richard Points 8614

Comme vous avez des données dans votre base de données de production, ne pas utiliser de migrations automatiques. Votre priorité est de synchroniser vos bases de données avec votre modèle. La manière de le faire dépendra de la complexité de votre modèle, par exemple, du nombre de tables. Ma suggestion serait :

  • Désactiver les migrations automatiques
  • Pointer votre copie de développement vers une base de données vide et créer une migration initiale
  • Exécuter Update-Database -Script pour générer un script SQL pour la migration
  • Modifier le script manuellement pour qu'il puisse être exécuté sur votre base de données de production
  • Exécuter cela sur votre base de données de production

Une fois que vous en êtes là, assurez-vous d'ajouter des migrations chaque fois que vous souhaitez apporter des modifications à votre modèle, plutôt que de les faire manuellement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X