Превратите сложный тип в сущность без потери данных - PullRequest
2 голосов
/ 26 марта 2012

Мы использовали сложный тип 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 Ответ

3 голосов
/ 26 марта 2012

Я верю, что вы можете. Измените ваш метод Up и перед вызовом DropColumn используйте метод Sql с пользовательским SQL, передающим данные из PurchaseOrders в CreditTransactions и фиксирующим отношения FK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...