ASP.NET Core MVC项目新增数据库列后如何更新DB.Context上下文
ASP.NET Core MVC项目数据库新增列后更新DbContext的操作步骤
首先先修正你现有代码的已知问题:你的SensorModbusRtusetting实体类里的Nane属性存在拼写错误,控制器Bind属性中写的是Name,二者不一致会导致该字段绑定失效,建议先统一修正为Name。
步骤1:更新实体模型
在SensorModbusRtusetting类中添加和数据库新增列对应的属性,示例如下(假设你新增的是可空字符串类型的Description列,可根据实际列的类型调整):
namespace Sensormanager2V2 { public partial class SensorModbusRtusetting { public string Comport { get; set; } public int Baudrate { get; set; } public string Channel { get; set; } public int Slaveid { get; set; } public int Pid { get; set; } public long Id { get; set; } // 修正拼写错误 public string Name { get; set; } // 新增的属性,和数据库新增列对应 public string Description { get; set; } } }
步骤2:更新DbContext的Fluent配置
在Context.cs的modelBuilder.Entity<SensorModbusRtusetting>配置块中,添加新增列的映射规则,示例如下:
modelBuilder.Entity<SensorModbusRtusetting>(entity => { entity.ToTable("SensorModbusRTUSetting"); entity.Property(e => e.Id).HasColumnName("id"); entity.Property(e => e.Baudrate).HasColumnName("baudrate"); entity.Property(e => e.Channel) .IsRequired() .HasColumnType("jsonb") .HasColumnName("channel"); entity.Property(e => e.Comport) .IsRequired() .HasColumnName("comport"); entity.Property(e => e.Pid).HasColumnName("pid"); entity.Property(e => e.Slaveid).HasColumnName("slaveid"); // 修正拼写后的Name属性映射 entity.Property(e => e.Name).HasColumnName("name"); // 新增列的映射,根据实际数据库列名、类型、是否必填调整配置 entity.Property(e => e.Description) .HasColumnName("description") .HasMaxLength(500); });
步骤3:同步实体和数据库结构
分两种开发模式处理:
- Code First模式(先写代码再同步数据库):
打开包管理器控制台执行以下命令:- 生成迁移文件:
Add-Migration AddDescriptionColumnToSensorModbusRTUSetting - 同步到数据库:
Update-Database
如果使用.NET CLI,对应命令为: dotnet ef migrations add AddDescriptionColumnToSensorModbusRTUSettingdotnet ef database update
- 生成迁移文件:
- DB First模式(先改数据库再同步代码):
执行Scaffold命令反向同步上下文和实体,示例命令(根据你的数据库连接、上下文名调整参数):Scaffold-DbContext "你的数据库连接字符串" Npgsql.EntityFrameworkCore.PostgreSQL -OutputDir Models -Context postgresContext -Force
步骤4:更新控制器和视图
- 控制器的
Create和Edit方法的Bind属性中,新增你添加的字段名,示例:[Bind("Comport,Baudrate,Channel,Slaveid,Pid,Id,Name,Description")] - 对应新增、编辑、详情、列表视图中,添加该字段的显示/输入组件,完成前端适配。
内容的提问来源于stack exchange,提问作者GG6565
相关产品推荐
相关产品推荐

