如何在Entity Framework Code First中删除表?

我正在使用Entity Framework和Auto Migrations。

因此,当我向Context添加新模型时,我的数据库会更新并创建新表。

我想要做的是反过来,完全从数据库中删除表。 但是,从Context类中删除定义不起作用。

public class CompanyContext : DbContext { public DbSet Permissions { get; set; } public DbSet Companies { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); } } 

例如,我想从数据库中删除Company表。 为此,我从CompanyContext类中删除Companies属性。 但是,它不起作用。

如果可能,在EF中删除表并使用自动迁移的正确方法是什么?

add-migrations命令可创建Migrations文件夹。 你可以看到包含两种方法的[DateStamp] _InitialCreate.cs文件。 上和下。 InitialCreate类的Up方法创建与数据模型实体集对应的数据库表,Down方法删除它们。 通常,当您输入命令以回滚数据库时,将调用Down方法。 您可以在Down方法中看到DropIndex,DropForeignKey,DropTable语句等语句。

如果Emre询问了问题,请在[DateStamp] _InitialCreate.cs类的Down方法中编写DropTable语句,该表将被删除。

希望它会有所帮助。

您应该实现“IDatabaseInitializer”并创建自定义逻辑来执行此操作。 例如,请访问此内容

另请参阅“ 如何在Code First Drop-Create模式下使用entity framework? ”,如果可以提供帮助的话。

根据我自己的经验,我是通过从VS 2010的Package控制台管理器运行以下语句来完成的

 update-database -StartupProjectName "Your Project Namespace" -script -Verbose –force 

确保选择“您的项目名称空间”作为默认项目。

添加AutomaticMigrationDataLossAllowed = true; 到Configuration类,它将自动删除表。