sql-server - Entity Framework 迁移 - 更改属性数据类型

标签 sql-server entity-framework asp.net-mvc-4 entity-framework-5 sqlexception

我正在使用 Entity Framework 5.0 开发 ASP.Net MVC 4 Web 应用程序以实现数据持久性。我在开发过程中使用代码优先和自动迁移。

由于我必须使用现有数据库,因此我使用了这个有用的教程来创建我的域类
Code First to an Existing Database

我的模型中有一个名为 tblcourseapplicant 的类,它有一个名为 ManagerTitle 的字符串属性。我想将此数据类型更改为 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();

我还更新了数据库中此特定列的所有数据,以便所有值都转换为整数。

我运行了我的项目,自动迁移尝试为我执行此更新,但返回时出现以下错误

Cannot insert the value NULL into column 'ManagerTitle', table 'tblcourseapplicant'; column does not allow nulls. UPDATE fails. The statement has been terminated.

我不明白为什么会这样,因为我的数据库表中没有 ManagerTitle 为 NULL 的记录,它们都被分配了一个整数值。

任何帮助将不胜感激。

谢谢。

更新

各位,我仍在努力寻找解决这个问题的方法。我注意到返回的错误是 SqlException。请问有人有什么想法吗?我不明白这里的问题是什么,我的理解是 Code First 自动迁移应该能够处理这个简单的属性数据类型更改。

救命!

最佳答案

数据库中该列是否已定义为可为空?

您还可以尝试在 POCO 中将其设置为可为空

public int? ManagerTitle { get; set; }

关于sql-server - Entity Framework 迁移 - 更改属性数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14499423/

相关文章:

sql-server - 同一列上具有多个聚合的 T-SQL Pivot

asp.net-mvc-3 - 将自定义方法集成到 LINQ to Entities 查询中

c# - 使用 Entity Framework : “No database provider has been configured for this DbContext” 配置 ASP.NET Core

C#/VB .Net 性能调优,生成所有可能的彩票组合

c# - Asp.Net SQL session 模式不会返回 JQuery post

c# - 乐观并发 : IsConcurrencyToken and RowVersion

asp.net-mvc - ASPNET 等待网页上的 Webhook 响应/结果

asp.net-mvc - 自定义 EditorFor 或任何 XXXXFor

javascript - 来自 Controller 的警报消息 : Add alert behavior in partial view?

c# - 使用 using 释放连接和命令