10

我正在使用实体框架4.3代码优先尝试迁移功能。如何通过实体框架影响列顺序代码优先迁移

如果我一个新的属性添加到我的课,然后再从包管理器控制台窗口中添加迁移我得到这样的:

public override void Up() 
    { 
     AddColumn("Products", "Discontinued", c => c.Boolean(nullable: false)); 
    } 

我希望能够影响的顺序列,因为我不想将它附加到表中,而是放在特定索引处。我想我也许可以将其添加到我的模型构建器的配置,是这样的:

Property(p => p.Discontinued).HasColumnOrder(2); 

但运行更新的数据库不会出现使用它。这可以作为迁移来完成吗?

+0

一)有没有办法插入到以前的专栏中没有做很多黑客,B)你不应该保持弃用通过使用“软删除”数据库中的数据 - 查看归档弃用的数据。 – 2012-03-27 20:22:26

+0

数据库表中的列按特定顺序有什么意义?它只是一个数据存储。 – 2012-03-28 07:24:54

+1

仅用于审美目的,就是这样。您可以在使用模型构建器创建数据库时指定它,因此只是想知道在作为迁移的一部分中添加新列时是否可能。没什么大不了。 – SteveB 2012-03-28 08:31:12

回答

5

这只是缺少功能的问题。 SQL本身并不依赖任何列的隐式顺序(有一些例外:ORDER BY,...)。

SQL Server和ORACLE都没有直接的SQL DDL命令(又名ALTER TABLE...)来移动列。

因此,不需要费力就可以更改订单(重新创建表格)。例如见