Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 迁移中有条件地删除列_Sql_.net_Entity Framework 5_Database Migration - Fatal编程技术网

Sql 迁移中有条件地删除列

Sql 迁移中有条件地删除列,sql,.net,entity-framework-5,database-migration,Sql,.net,Entity Framework 5,Database Migration,我想在向上迁移中执行列删除。我用的是EF5 DropColumn("dbo.MyObjects", "AttributeId"); 问题在于,在某种程度上,数据库实例的一部分没有该列的详细内容。我正在考虑用Sql删除它并在sys.columns中搜索,或者在try中包装DropColumn。。。接住 但也许有一些已知的方法可以实现实体框架迁移?在我的专栏中也有一个默认约束,因此最终得到以下结果: 公共覆盖无效 { Sql@IF存在 从sys.c列中选择1 t.object\u id=c.obj

我想在向上迁移中执行列删除。我用的是EF5

DropColumn("dbo.MyObjects", "AttributeId");
问题在于,在某种程度上,数据库实例的一部分没有该列的详细内容。我正在考虑用Sql删除它并在sys.columns中搜索,或者在try中包装DropColumn。。。接住


但也许有一些已知的方法可以实现实体框架迁移?

在我的专栏中也有一个默认约束,因此最终得到以下结果:

公共覆盖无效 { Sql@IF存在 从sys.c列中选择1 t.object\u id=c.object\u id上的内部联接sys.t表 其中c.name='AttributeId'和t.name='MyObjects' 开始 声明@AttributeDefConstraint nvarchar128 选择@AttributeDefConstraint=name 从sys.default\u约束 其中parent_object_id=object_id'dbo.MyObjects' 和col_name parent_object_id,parent_column_id='AttributeId'; 如果@AttributeDefConstraint不为NULL 开始 执行'ALTER TABLE[dbo].[MyObject]DROP CONSTRAINT'+@attributeIDEFCONSTRAINT' 终止 ALTER TABLE[dbo].[MyObject]删除列[AttributeId] 终止 }
希望这样可以节省时间。

决定在此处发布解决方案,以便有人可以重复使用。