共计 1520 个字符,预计需要花费 4 分钟才能阅读完成。
背景痛点
作为一名 C# 开发者,手动创建和维护数据库表是一件非常耗时且容易出错的事情。特别是在敏捷开发环境中,需求变化频繁,数据库结构需要不断调整。手动修改 SQL 脚本、同步开发环境和生产环境的数据库结构,不仅效率低下,还容易引入错误。

技术选型对比
Entity Framework Core 提供了两种主要的工作流:代码优先和数据库优先。
- 代码优先:从 C# 模型类开始,通过迁移命令自动生成数据库结构。适合新项目开发,变更管理更方便。
- 数据库优先:从现有数据库生成模型类。适合已有数据库的项目,但变更时需要额外步骤同步。
对于大多数新项目,代码优先模式是更优选择,因为它将数据库结构定义保留在代码中,便于版本控制和团队协作。
核心实现流程
- 定义模型类:创建代表数据库表的 C# 类
- 配置 DbContext:设置数据库连接和模型关系
- 创建迁移:生成描述数据库变更的迁移文件
- 应用迁移:将变更应用到数据库
- 处理生产环境部署:安全的迁移策略
代码示例
模型类定义
// 产品模型
public class Product
{public int Id { get; set;} // 主键
[Required, MaxLength(100)]
public string Name {get; set;}
[Column(TypeName = "decimal(18,2)")]
public decimal Price {get; set;}
public int Stock {get; set;}
public DateTime CreatedDate {get; set;} = DateTime.UtcNow;
}
DbContext 配置
public class AppDbContext : DbContext
{public DbSet<Product> Products { get; set;}
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer("YourConnectionString");
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// 可在此添加额外的模型配置
modelBuilder.Entity<Product>()
.HasIndex(p => p.Name)
.IsUnique();}
}
迁移命令执行
-
安装 EF Core 工具:
dotnet tool install --global dotnet-ef -
创建迁移:
dotnet ef migrations add InitialCreate -
应用迁移:
dotnet ef database update
生产环境考量
- 迁移冲突 :团队协作时可能遇到多人同时添加迁移的情况。解决方案是使用
dotnet ef migrations script生成 SQL 脚本,人工合并后再应用。 - 字段类型优化:注意 CLR 类型与数据库类型的映射,特别是字符串长度和十进制精度。
- 团队协作:将迁移文件纳入版本控制,确保所有开发者使用相同的基础迁移。
避坑指南
- 忘记添加迁移:修改模型后必须创建新迁移
- 字段类型不匹配:明确指定 Column 特性中的数据库类型
- 连接字符串错误:区分开发和生产环境的连接字符串
- 迁移顺序问题:确保按正确顺序应用迁移
总结与下一步
通过本文,你应该已经掌握了使用 EF Core 代码优先方法自动生成数据库表的完整流程。现在可以尝试在自己的项目中实现这一工作流。
为了进一步提升效率,可以考虑将数据库迁移集成到 CI/CD 管道中,实现自动化部署。也可以探索更高级的特性,如种子数据、并发控制和性能优化等。
记住,好的工具只是起点,关键是如何将它们融入你的开发流程,创造真正的价值。
正文完
发表至: 编程开发
近一天内
