更改外键类型而不会丢失数据。(asp.net)

时间:2017-09-06 22:54:18

标签: asp.net-mvc entity-framework ef-migrations

我使用实体框架在学生表和部门表之间创建了一对多的关系。但不幸的是在学生表中,外键(DepartmentId)类型我给了字符串,但它应该是int。如何在不丢失数据的情况下解决此问题????????

N.B:我正在使用实体框架代码第一种方法。

1 个答案:

答案 0 :(得分:0)

我认为你不能这样做,考虑到你的DepartamentID是Departament表的PK,所以你必须放弃旧的领域并创建一个新的领域,就像这样

AddColumn("dbo.Departament", "DepartamentID2", c => c.Int(nullable: false));
Sql(@"
    UPDATE dbp.Departament
    SET DepartamentID2 = DepartamentID
    ");

Sql(@"
        ALTER TABLE dbo.Departament drop CONSTRAINT <The FK Constraint>
        ");
DropColumn("dbo.Departament", "DepartamentID");
RenameColumn("dbo.Departament", "DepartamentID2", "DepartamentID");

Sql(@"
        ALTER TABLE dbo.Departament add PRIMARY KEY (DepartamentID)
        ");

Sql(@"
            ALTER TABLE dbo.Departament add CONSTRAINT <The FK 
  constraint>
            ");