【发布时间】:2013-01-28 00:46:05
【问题描述】:
我是 EF5 Code First 的新手,在开始工作项目之前,我正在修改概念验证。
我最初创建了一个看起来像这样的模型
public class Person {
public int Id { get; set; }
public string FirstName { get; set;}
public string Surname {get;set;}
public string Location {get;set;}
}
然后我使用我放在顶部的一个小型 MVC 应用程序添加了一些记录。
现在我想将 Location 列更改为枚举,例如:
public class Person {
public int Id { get; set; }
public string FirstName { get; set;}
public string Surname {get;set;}
public Locations Location {get;set;}
}
public enum Locations {
London = 1,
Edinburgh = 2,
Cardiff = 3
}
当我添加新的迁移时,我得到:
AlterColumn("dbo.People", "Location", c => c.Int(nullable: false));
但是当我运行 update-database 时出现错误
Conversion failed when converting the nvarchar value 'London' to data type int.
迁移中有没有办法在运行alter语句之前截断表?
我知道我可以打开数据库并手动操作,但有没有更聪明的方法?
【问题讨论】:
-
我建议处于类似职位的开发人员在遵循此页面上的一些答案之前查看转换是否由实体框架自动处理。例如,我发现它可以在没有我帮助的情况下处理字符串和小数之间的转换,然后再返回 - Add-Migration 生成的迁移工作正常。显然,在将其应用于生产之前,请先在本地/测试数据库上试用!
标签: c# ef-code-first entity-framework-5 entity-framework-migrations