2012-03-27 166 views
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...)來移動列。

因此,不需要費力就可以更改訂單(重新創建表格)。例如見

相關問題