将复杂类型转换为实体而不会丢失数据

时间:2012-03-26 10:02:09

标签: entity-framework ef-code-first ef-migrations

我们一直在使用与我们的采购订单相关联的复杂类型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
}

1 个答案:

答案 0 :(得分:3)

我相信你可以。修改您的Up方法,然后调用DropColumn使用Sql方法,并使用自定义SQL将数据从PurchaseOrders传输到CreditTransactions并修复FK关系。