【问题标题】:Move a column from one table to another along with values using EF migrations使用 EF 迁移将列与值一起从一个表移动到另一个表
【发布时间】:2018-07-02 12:10:06
【问题描述】:

我已经创建了我的应用程序的新版本。我有一个带有值的数据库,现在我想使用实体框架迁移将列从以前版本的一个表移动到另一个具有新版本中的值的表。

public override void up(){             
     Create.Column("Name").OnTable("Table2");
     Delete.Column("Name").FromTable("Table1");
}

实际输出:

Table1 in old Version:
    -------------
    |Id   | Name|
    -------------
    |1    | A   |
    -------------
Table2 in old Version:
    -------------
    |Id   | Age |
    -------------
    |1    | 4   |
    -------------
 Table1 in new Version:
    ------
    |Id  | 
    ------
    |1   |
    ------
 Table2 in new Version:
    ------------------
    |Id  | Age | Name|
    ------------------
    |1   | 4   | null|
    ------------------

预期输出:

Table1 in old Version:
    -------------
    |Id   | Name|
    -------------
    |1    | A   |
    -------------
Table2 in old Version:
    -------------
    |Id   | Age |
    -------------
    |1    | 4   |
    -------------
 Table1 in new Version:
    ------
    |Id  | 
    ------
    |1   |
    ------
 Table2 in new Version:
    ------------------
    |Id  | Age | Name|
    ------------------
    |1   | 4   | A   |
    ------------------

在这里,我想在 Table2 中从 Table1 创建一个名称(列)-> 名称以及值。

【问题讨论】:

  • 如果不编写自定义 SQL(),我认为您无法做到

标签: c# entity-framework database-migration


【解决方案1】:

在删除 table1 中的列之前,我可以通过在迁移文件中添加一条 sql 语句来解决该问题。

public override void up(){             
     Create.Column("Name").OnTable("Table2");
     Execute.Sql("UPDATE table2 Inner join table1 on table2.Id = table1.Id set table2.Name = table1.Name");
     Delete.Column("Name").FromTable("Table1");
}

如果有其他方法可以做到这一点,请建议我。

【讨论】:

    猜你喜欢
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    相关资源
    最近更新 更多