我正在使用 Entity Framework 5.0 开发一个 ASP.Net MVC 4 Web 应用程序以实现数据持久性。我在开发过程中使用 Code First 和 Automatic Migrations。
由于我必须使用现有数据库,因此我使用这个有用的教程将我的域类
代码首先创建到现有数据库
我的模型中有一个名为tblcourseapplicant的类,它有一个名为ManagerTitle的 String 属性。我想将此数据类型更改为Int,为此我更改了 POCO 类中的属性
从
public string ManagerTitle { get; set; }
到
public int ManagerTitle { get; set; }
然后我使用 Fluent API 更改了相关映射类 (tblcourseapplicantMap) 中的属性属性
从
this.Property(t => t.ManagerTitle).HasMaxLength(5);
到
this.Property(t => t.ManagerTitle).IsRequired();
我还更新了数据库中此特定列的所有数据,以便所有值都转换为整数。
我运行了我的项目,自动迁移尝试为我执行此更新,但它返回以下错误
无法将值 NULL 插入列“ManagerTitle”、表“tblcourseapplicant”;列不允许空值。更新失败。该语句已终止。
我不明白为什么会这样,因为我的数据库表中没有 ManagerTitle 为 NULL 的记录,它们都被分配了一个整数值。
任何帮助将不胜感激。
谢谢。
更新
伙计们,我仍在努力寻找解决此问题的方法。我注意到返回的错误是SqlException。请问有人有什么想法吗?我不明白这里有什么问题,我的理解是 Code First Automatic Migrations 应该能够处理这个简单的属性数据类型更改。
帮助!