C# 使用EF Core db first 注意事项
书接上回,我尝试了用db first 映射成C#实体类发现了很多问题
1.表名称不一致
2.字段名称不一致
3.没有数据注解
4.暴露连接字符串
通过查阅资料发现 还有这些命令
--use-database-names 使用数据库中的原始表名和列名(不转驼峰)
--no-pluralize 禁用复数化服务(关键!防止 BDS → BD)
--data-annotations 生成 [Column]、[StringLength] 等注解
--no-onconfiguring 不生成 OnConfiguring 方法(便于自己管理连接字符串)
以下是完整的迁移命令
dotnet ef dbcontext scaffold "Server=YourConnectStrings" Microsoft.EntityFrameworkCore.SqlServer -o Models(自己命名) --context AppDbContext(自己命名) --table D_METER_ALARM --use-database-names --no-pluralize --data-annotations --no-onconfiguring --force
在Programs.cs 添加
获取连接字符串
var connStr = builder.Configuration.GetConnectionString("SqlserverConnection");
注册 DbContext 到依赖注入容器
builder.Services.AddDbContext
再控制器注入你的dbcontext类(我的是_testcontext)
[HttpPost("InsertTest")]
public IActionResult InsertTest([FromBody] List<D_METER_BDS> inputs)
{
try
{
foreach (var input in inputs)
{
input.ORDERID ??= Guid.NewGuid().ToString("N").Substring(0, 32);
input.ASSET_NO ??= "DEFAULT_ASSET";
input.CHECK_DATE = input.CHECK_DATE == default ? DateTime.Now : input.CHECK_DATE;
input.BDS_PKIND = input.BDS_PKIND == default ? 0 : input.BDS_PKIND;
}
_testcontext.D_METER_BDS.AddRange(inputs);
_testcontext.SaveChanges();
return Ok(new { Message = $"成功插入 {inputs.Count} 条记录", Data = inputs });
}
catch (Exception ex)
{
return StatusCode(500, $"插入失败: {ex.Message}");
}
}
以上便是插入到数据库的完整方法,如果问题或者见解希望指出来!

浙公网安备 33010602011771号