【发布时间】:2014-05-28 19:34:48
【问题描述】:
我首先使用实体框架 6 代码处理一个项目,我正在尝试找出正确的方法从数据库中删除一个现已过时的表。网上似乎没有太多关于这方面的信息,我知道我可以简单地从我的 dbcontext 中删除 dbset,删除它的迁移文件以及 db 中的迁移表中的行,但我只是想看看是否这是唯一的方法,因为这似乎很麻烦?
【问题讨论】:
标签: ef-code-first entity-framework-6
我首先使用实体框架 6 代码处理一个项目,我正在尝试找出正确的方法从数据库中删除一个现已过时的表。网上似乎没有太多关于这方面的信息,我知道我可以简单地从我的 dbcontext 中删除 dbset,删除它的迁移文件以及 db 中的迁移表中的行,但我只是想看看是否这是唯一的方法,因为这似乎很麻烦?
【问题讨论】:
标签: ef-code-first entity-framework-6
如果我理解正确,您也在使用迁移,因此简单地删除迁移文件不是一个好主意,因为它会破坏具有最新迁移的数据库。
而是在从 DbContext 中删除相关的 DbSet 之后创建另一个迁移步骤,当然还有从仍在数据库。
当你创建这个新的迁移步骤时,瞧,一个 DropTable(...) 迁移操作将出现在 Up() 函数中,它将删除这个表。
我认为这是解决您的问题的最干净和最简单的解决方案 :)
【讨论】:
这有点复古,但请尝试以下。在这个例子中,db 是数据库上下文,A 是表名:
db.Database.ExecuteSqlCommand("drop table A");
似乎对我有用。
【讨论】: