如何使用EF6.0中的代码优先方法从sql表中删除列?
由于错误,我现在在数据库中添加了一列,名为如何使用EF6.0中的代码优先方法从sql表中删除列?,sql,asp.net-mvc,entity-framework,Sql,Asp.net Mvc,Entity Framework,由于错误,我现在在数据库中添加了一列,名为doj,如果我想使用代码优先的方法从表中删除该列,我应该怎么做 我已经试过了 1-从模型中删除列定义。 2-已删除迁移历史记录。 3-添加迁移 4-更新数据库 但它仍然没有反映在数据库中?我在哪里犯的错误?你应该这样做 1-)从模型中删除列定义。 2-)构建您的项目 3-)添加迁移 4-)更新数据库 您不应该删除迁移历史记录。 删除列时请小心,因为表中的数据可能会丢失数据。无需删除迁移历史记录 只需遵循以下步骤 1: Remove properties
doj
,如果我想使用代码优先的方法从表中删除该列,我应该怎么做
我已经试过了
1-从模型中删除列定义。2-已删除迁移历史记录。
3-添加迁移
4-更新数据库 但它仍然没有反映在数据库中?我在哪里犯的错误?你应该这样做 1-)从模型中删除列定义。 2-)构建您的项目 3-)添加迁移 4-)更新数据库 您不应该删除迁移历史记录。
删除列时请小心,因为表中的数据可能会丢失数据。无需删除迁移历史记录 只需遵循以下步骤
1: Remove properties from the model.
2: Run 'Enable-Migrations' in package manage console.
3: Next Run 'Add-Migration "MigrationsName"'. if any case it is showing 'The project tesproject failed to build then build project again.
4: Now run 'Update-Database'
这将对您的代码产生严重影响。尽管Neeraj的答案是正确的,而且在大多数情况下效果很好,但如果该列中包含以前的数据,则该列将从索引中删除,但数据仍将存在(就此而言,该列也是如此) 要完全删除列(及其数据),请使用
DropColumn()
方法。要完成此操作,请创建一个新的迁移addmigration unwantedColumnCleanup
,并在up()
方法中包含必要的代码,然后更新数据库
namespace MyDB.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class unwantedColumnCleanup : DbMigration
{
public override void Up()
{
DropColumn("Table", "Column");
}
public override void Down()
{
}
}
}
别担心,实际上我遇到的问题和你需要做的是一样的。
1:从为创建该列而添加的类中删除属性。
2:在Visual Studio中打开包管理器控制台
3:您已经启用了迁移,因此无需再次运行,但由于某些原因,如果您收到启用迁移的消息,只需运行Enable Migrations(启用迁移)
4:运行更新数据库-TargetMigration:“迁移”
其中,第4点中的迁移是为添加列而添加的迁移的名称
希望它能帮助你 是否删除了数据库中的迁移表?只需删除模型中的列并删除迁移表,如果该列不起作用,只需删除包含该列的表。如果要将代码发布到test/prod server,则会返回错误,因为其中包含数据。如何忽略这一点并强制其删除列?验证项目生成本应是一件轻而易举的事,但在看到这一点后,更正了不支持的Resharper工具,然后我的生成成功并能够更新。谢谢@Demster