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

我正在使用实体框架和自动迁移。

所以当我向Context添加一个新模型时,我的数据库会更新并创建一个新表。

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

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);
    }
}

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

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


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

在Emre询问的情况下,在[DateStamp] _InitialCreate.cs类的Down方法中写入DropTable语句,并且该表将被删除。

希望这会有所帮助。


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

另请参阅“如何在Code First Drop-Create模式下使用实体框架?” 如果它可以帮助。

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

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

确保你选择了“你的项目名字空间”作为默认项目。


添加AutomaticMigrationDataLossAllowed = true; 到配置类,它会自动删除表。

链接地址: http://www.djcxy.com/p/75017.html

上一篇: How to drop a table in Entity Framework Code First?

下一篇: Adding Google Search API to Android App