共计 1411 个字符,预计需要花费 4 分钟才能阅读完成。
背景痛点
在传统开发流程中,手动创建数据库表和编写 C# 模型类往往存在以下问题:

- 同步困难:数据库表结构变更后,容易忘记更新对应的 C# 模型类
- 错误率高:手动编写 SQL 脚本时,字段类型、长度等细节容易出错
- 效率低下:每次变更都需要重复执行创建表、添加字段等操作
技术方案对比
Entity Framework Core 提供了三种主要工作模式:
- Code First:先编写模型类,再生成数据库(本文重点)
- Database First:从现有数据库反向生成模型类
- Model First:使用设计器创建模型,再生成数据库和代码
对于新项目,Code First 模式具有明显优势:
- 完全面向对象开发
- 版本控制友好
- 自动化迁移更可靠
核心实现步骤
1. 定义模型类
// Product.cs
public class Product
{[Key] // 主键注解
public int Id {get; set;}
[Required] // 非空约束
[MaxLength(100)] // 长度限制
public string Name {get; set;}
[Column(TypeName = "decimal(18,2)")] // 指定列类型
public decimal Price {get; set;}
public DateTime CreatedDate {get; set;} = DateTime.UtcNow;
}
2. 配置 DbContext
// AppDbContext.cs
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)
{
// Fluent API 配置示例
modelBuilder.Entity<Product>()
.Property(p => p.Name)
.IsRequired()
.HasMaxLength(100);
}
}
3. 执行迁移命令
- 打开 NuGet 包管理器控制台
- 执行添加迁移命令:
Add-Migration InitialCreate - 更新数据库:
Update-Database
生产环境最佳实践
迁移脚本管理
- 每个迁移应具有描述性名称
- 将迁移脚本纳入版本控制
- 生产环境执行前先备份
敏感数据处理
// 使用敏感数据保护
optionsBuilder.UseSqlServer(Configuration.GetConnectionString("Default"));
性能优化
- 批量操作使用
AddRange/RemoveRange - 禁用跟踪查询时使用
AsNoTracking - 合理配置索引
常见问题排查
- 迁移冲突:
-
解决方案:删除 Migrations 文件夹后重新创建
-
连接失败:
-
检查连接字符串和网络权限
-
字段类型不匹配:
- 使用
[Column]特性明确指定类型
总结与思考
通过本文的实践,您应该已经掌握了使用 EF Core Model 命令生成数据库表的基本流程。建议尝试以下扩展练习:
- 为模型添加导航属性实现关系
- 创建自定义迁移脚本
- 尝试在不同环境中应用迁移
完整的项目示例已上传 GitHub(假设链接),欢迎参考和提出改进建议。
正文完
发表至: 编程开发
近一天内
