代码优先迁移后更改模型

时间:2016-12-01 13:24:41

标签: asp.net-mvc

我启用了代码优先迁移,但有一段时间后我更改了模型属性,因此当我运行应用程序时,会出现以下错误。

列名等无效...因为迁移后我更改了模型。

到目前为止,我理解问题是我更新了模型,但这些更改不适用于数据库表...请帮我修复它..意思是模型属性和数据库列不匹配

启用迁移。 我将自动迁移设置为true,但我不起作用。

Error

public class Floor
{
    public int FloorID { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Room> Rooms { get; set;}
}


public class Room
{
    public int RoomID { get; set; } 
    public string Name { get; set; }

    [Display(Name ="Room Rent")]
    public decimal Rent { get; set; }
    [Display(Name="Floor")]
    public int FloorID { get; set; }

    public int Seater { get; set; }

    [Display(Name="Attach Bathroom")]
    public Boolean AttachedBathRoom { get; set; }

    public virtual Floor Floor { get; set; }
    public virtual ICollection<Student> Students { get; set; }
}

public class Student
{

    public int StudentID { get; set; }
    public string Name { get; set; }
    public int CNIC { get; set; }
    public int Phone { get; set; }
    [Display(Name="Floor")]
    public int FloorID { get; set; }
    [Display(Name ="Room No")]
    public int RoomID { get; set; } 

    public string Address { get; set; }

    public string Email { get; set; }
    public string Department { get; set; }

    public virtual Floor Floor { get; set; }
    public virtual Room Room { get; set; }
}

1 个答案:

答案 0 :(得分:0)

首先,您需要在类中指定主键和外键。

要指定主键,请在键属性之前添加[Key]。对于外键,您还必须添加链接到的表。所以在你的Room课程中你会有这样的东西:

[Key]
[ForeignKey("Floor")]
public int FloorID { get; set; }

对所有模特中的所有按键执行相同操作。

然后,您需要添加新的迁移,然后更新数据库。

在Packet Manager控制台中,键入以添加新迁移:

Add-Migration FooBar

然后使用以下命令更新数据库:

Update-Database