Comment faire pour supprimer une table dans l'Entity Framework Code First?
Je suis en utilisant Entity Framework avec Auto Migrations.
Alors, quand j'ajoute un nouveau modèle à mon égard, ma base de données est mise à jour et la nouvelle table est créée.
Ce que je veux faire est à l'opposé, dropant la table complètement à partir de la base de données. Toutefois, la suppression de la définition de classe de Contexte ne fonctionne pas.
public class CompanyContext : DbContext
{
public DbSet<Permission> Permissions { get; set; }
public DbSet<Company> Companies { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
Par exemple, je veux supprimer Company
table de base de données. Pour ce faire, j'ai supprimer Companies
propriété de CompanyContext
classe. Cependant, il n'est pas de travail.
Quelle est la bonne façon de supprimer des tables dans de l'EF et de l'utilisation de l'auto migrations si possible ?
OriginalL'auteur emre nevayeshirazi | 2013-10-19
Vous devez vous connecter pour publier un commentaire.
L'add-migrations commande crée un des Migrations dossier. Vous pouvez voir [Horodatage]_InitialCreate.cs fichier contenant deux méthodes à savoir.; En haut et en Bas. La méthode de la InitialCreate classe crée les tables de base de données qui correspond au modèle de données d'entité, et à la méthode de les supprimer. En général, lorsque vous saisissez une commande pour la restauration d'une base de données, la méthode est appelée. Vous pouvez voir les déclarations comme DropIndex, DropForeignKey, DropTable consolidés en Bas de méthode.
Dans le cas de la question posée par Emre, écrire le DropTable énoncé dans la méthode de [Horodatage]_InitialCreate.cs de la classe et de la table se être abandonné.
Espérons que cela va aider.
OriginalL'auteur Abhishek Sathe
Vous devez mettre en œuvre votre "IDatabaseInitializer" et de créer une logique personnalisée pour effectuer cette opération. Par exemple, visitez cette
Aussi s'il vous plaît voir "Comment puis-je utiliser Entity Framework Code First Drop-le mode Créer?" si ça peut aider.
Dans ma propre expérience, je l'ai fait en exécutant la déclaration ci-dessous de l'emballage de la console gestionnaire de VS 2010
Assurez-vous que vous avez "Votre Projet d'espace de Noms" sélectionné par défaut du projet.
Alors pourquoi ne pas vous mettre à jour votre Modèle et exécutez le gestionnaire de paquets de la console de commande mentionnée ci-dessus?
Je l'ai fait. J'ai supprimé les classes du modèle de DbContext classe et j'ai aussi supprimé le fichier du modèle lui-même. Je pensais que les migrations automatiques devraient faire le reste. Il n'est pas.
Avant d'analyser plus loin, je suis juste aveugle de l'idée. Vous pouvez faire usage de DropCreateDatabaseAlways de supprimer et de re-créer une base de données et que votre code d'exécuter le sql de semences fichier automatiquement pour insérer les données. (Vous pouvez ainsi générer le script avant de l'exécuter "DropCreateDatabaseAlways")
OriginalL'auteur CodeMad
Ajouter
AutomaticMigrationDataLossAllowed = true;
à la classe de Configuration et il va baisser automatiquement des tables.OriginalL'auteur Greg Gum