我启用了代码优先迁移,但有一段时间后我更改了模型属性,因此当我运行应用程序时,会出现以下错误。
列名等无效...因为迁移后我更改了模型。
到目前为止,我理解问题是我更新了模型,但这些更改不适用于数据库表...请帮我修复它..意思是模型属性和数据库列不匹配
启用迁移。 我将自动迁移设置为true,但我不起作用。
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; }
}
答案 0 :(得分:0)
首先,您需要在类中指定主键和外键。
要指定主键,请在键属性之前添加[Key]
。对于外键,您还必须添加链接到的表。所以在你的Room课程中你会有这样的东西:
[Key]
[ForeignKey("Floor")]
public int FloorID { get; set; }
对所有模特中的所有按键执行相同操作。
然后,您需要添加新的迁移,然后更新数据库。
在Packet Manager控制台中,键入以添加新迁移:
Add-Migration FooBar
然后使用以下命令更新数据库:
Update-Database