Fondamentalement, j'ai une table dans ma base de données EF avec les propriétés suivantes:
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Image { get; set; }
public string WatchUrl { get; set; }
public int Year { get; set; }
public string Source { get; set; }
public int Duration { get; set; }
public int Rating { get; set; }
public virtual ICollection<Category> Categories { get; set; }
Cela fonctionne bien, mais lorsque je change l'int de Rating pour être un double, j'obtiens l'erreur suivante lors de la mise à jour de la base de données:
L'objet 'DF_ Movies _Rating__48CFD27E' dépend de la colonne 'Rating'. ALTER TABLE ALTER COLUMN L'évaluation a échoué car un ou plusieurs objets accèdent à cette colonne.
Quel est le problème?
sql
sql-server
database
entity-framework
entity-framework-4
Jordan Axe
la source
la source
Réponses:
Essaye ça:
Supprimez la contrainte DF_Movies_Rating__48CFD27E avant de modifier votre type de champ.
La contrainte est généralement créée automatiquement par le SGBD (SQL Server).
Pour voir la contrainte associée à la table, développez les attributs de table dans l' Explorateur d'objets , puis la catégorie Contraintes comme indiqué ci-dessous:
Vous devez supprimer la contrainte avant de modifier le type de champ.
la source
update-database
il se recrée à nouveau, j'ai posté ce problème: stackoverflow.com/questions/40267769/…C'est le
tsql
cheminPar souci d'exhaustivité, cela montre simplement le commentaire de @Joe Taras comme réponse
la source
J'ajoute ceci comme réponse pour expliquer d'où vient la contrainte. J'ai essayé de le faire dans les commentaires mais c'est difficile de bien éditer là-bas: - /
Si vous créez (ou modifiez) une table avec une colonne qui a des valeurs par défaut, cela créera la contrainte pour vous.
Dans votre tableau par exemple, cela pourrait être:
Cela créera la contrainte par défaut 100.
Si vous le créez plutôt comme ça
Ensuite, vous obtenez une contrainte bien nommée qui est plus facile à référencer lorsque vous modifiez ladite table.
Vous pouvez combiner ces 2 dernières instructions afin de modifier la colonne et de nommer la contrainte sur une ligne (vous devez quand même le faire s'il s'agit d'une table existante)
la source
Comme la contrainte a un nom imprévisible, vous pouvez écrire un script spécial ( DropConstraint ) pour le supprimer sans connaître son nom (a été testé à EF 6.1.3):
la source
MS SQL Studio prend soin de supprimer la colonne mais si vous devez supprimer la contrainte par programme voici une solution simple
Voici un extrait de code qui supprimera une colonne avec une contrainte par défaut:
Remplacez simplement TableName et ColumnName par les valeurs appropriées. Vous pouvez l'exécuter en toute sécurité même si la colonne a déjà été supprimée.
Bonus : voici le code pour supprimer les clés étrangères et d'autres types de contraintes.
Blog
la source
Lorsque nous essayons de supprimer une colonne dont dépend, nous voyons ce type d'erreur:
supprimez la contrainte qui dépend de cette colonne avec:
Exemple:
Contrainte de suppression (DF__Employees__Colf__1273C1CD):
Ensuite, vous pouvez supprimer la colonne:
la source
Solution :
ouvrir la table de base de données -> développer la table -> développer les contraintes et voir ceci
la source
J'ai eu cette erreur en essayant d'exécuter une migration pour la contourner J'ai renommé la colonne et re-généré la migration en utilisant
dans la console du gestionnaire de packages. J'ai pu alors courir
avec succès.
la source