EF Core 2.0无法为特定表/实体类新增列问题求助
既然你已经顺利完成ASP.NET Core 2.0和EF Core 2.0的升级,之前的迁移操作也都没问题,那给cfgPageMenuItems表加这个简单列的操作其实很直接,我给你一步步拆解:
1. 更新实体类定义
首先在你的实体类里新增MenuReqRole属性,根据业务需求配置对应的特性就行——比如如果这个字段是可选的就不用加[Required],如果有长度限制就补充[MaxLength]:
[Key] [MaxLength(10)] public string MenuArea { get; set; } [Key] [Required] public int MenuOrderId { get; set; } [Required] public string MenuHeaderEntry { get; set; } // 新增的列,根据需求调整特性 public string MenuReqRole { get; set; } // 示例:如果需要必填+长度限制,可以写成 [Required][MaxLength(50)] public string MenuReqRole { get; set; }
这里要提一句:你的实体用了复合主键(MenuArea和MenuOrderId都标记了[Key]),EF Core 2.0对复合主键的迁移支持完全没问题,不用额外做特殊配置。
2. 创建新的迁移脚本
打开你的开发工具终端(Package Manager Console或者.NET CLI都可以),运行创建迁移的命令:
- 如果你用Package Manager Console:
Add-Migration AddMenuReqRoleToCfgPageMenuItems
- 如果你用.NET CLI:
dotnet ef migrations add AddMenuReqRoleToCfgPageMenuItems
执行完后,去项目的迁移文件夹里看看生成的文件,确认内容只是给cfgPageMenuItems表添加MenuReqRole列,没有其他意外的变更。
3. 将迁移应用到数据库
确认迁移文件没问题后,执行命令把变更同步到数据库:
- Package Manager Console:
Update-Database
- .NET CLI:
dotnet ef database update
可能遇到的小坑及排查方向
如果迁移过程中报错,先检查这几点:
- 实体类的属性特性是否和你期望的数据库列类型匹配(比如是否允许为空、字符串长度)
- 数据库连接字符串是否正确,当前操作的数据库用户有没有修改表结构的权限
- 之前的所有迁移是否都已经成功同步到数据库了(可以查看数据库里的
__EFMigrationsHistory表确认)
内容的提问来源于stack exchange,提问作者Jan1409
相关产品推荐
相关产品推荐

