2012-03-26 44 views
2

我們一直在使用與我們的採購訂單相關的複雜類型CreditCardTransaction。它真的應該是它自己的實體,我現在正試圖解決這個問題。將複雜類型變爲實體而不丟失數據

你將如何從這個寫遷移:

[ComplexType()] 
public class CreditCardTransaction 
{ 
    public String SomeTransactionData { get; set; } 
} 

這個實體:

public class CreditCardTransaction 
{ 
    public int Id { get; set; } 
    public String SomeTransactionData { get; set; } 
} 

這對我來說是生成了什麼。我可以輕鬆將原始表格中的數據移動到另一個表格嗎?

public partial class test : DbMigration 
{ 
    public override void Up() 
    { 
     CreateTable(
      "CreditCardTransactions", 
      c => new 
       { 
        Id = c.Int(nullable: false, identity: true), 
        SomeTransactionData = c.String() 
       }) 
      .PrimaryKey(t => t.Id); 

     AddColumn("PurchaseOrder", "Transaction_Id", c => c.Int()); 
     AddForeignKey("PurchaseOrder", "Transaction_Id", "CreditCardTransactions", "Id"); 
     CreateIndex("PurchaseOrders", "Transaction_Id"); 
     DropColumn("PurchaseOrders", "Transaction_SomeTransactionData"); 
    } 

    // Down() snipped 
} 

回答

3

我相信你可以。修改您的Up方法,並在調用DropColumn之前使用Sql方法使用自定義SQL將數據從PurchaseOrders轉換爲CreditTransactions並修復FK關係。

+0

是的,看起來這是唯一的方法。完成! :) – 2012-03-27 16:05:37