Dot*_*Dev 3 c# entity-framework database-migration
我已经创建了我的应用程序的新版本。我有一个包含值的数据库,现在我想使用实体框架迁移将一列从先前版本中的一个表移动到新版本中包含值的另一个表。
public override void up(){
Create.Column("Name").OnTable("Table2");
Delete.Column("Name").FromTable("Table1");
}
Run Code Online (Sandbox Code Playgroud)
实际输出:
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|
------------------
Run Code Online (Sandbox Code Playgroud)
预期输出:
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 |
------------------
Run Code Online (Sandbox Code Playgroud)
在这里,我想从 Table1 -> 名称以及值在 Table2 中创建一个名称(列)。
我可以通过在删除 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");
}
Run Code Online (Sandbox Code Playgroud)
如果有其他方法可以做到这一点,请建议我。