C# Model命令生成数据库表实战指南:从零到生产环境部署

1次阅读
没有评论

共计 1411 个字符,预计需要花费 4 分钟才能阅读完成。

image.webp

背景痛点

在传统开发流程中,手动创建数据库表和编写 C# 模型类往往存在以下问题:

C# Model 命令生成数据库表实战指南:从零到生产环境部署

  • 同步困难:数据库表结构变更后,容易忘记更新对应的 C# 模型类
  • 错误率高:手动编写 SQL 脚本时,字段类型、长度等细节容易出错
  • 效率低下:每次变更都需要重复执行创建表、添加字段等操作

技术方案对比

Entity Framework Core 提供了三种主要工作模式:

  1. Code First:先编写模型类,再生成数据库(本文重点)
  2. Database First:从现有数据库反向生成模型类
  3. 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. 执行迁移命令

  1. 打开 NuGet 包管理器控制台
  2. 执行添加迁移命令:
    Add-Migration InitialCreate
  3. 更新数据库:
    Update-Database

生产环境最佳实践

迁移脚本管理

  • 每个迁移应具有描述性名称
  • 将迁移脚本纳入版本控制
  • 生产环境执行前先备份

敏感数据处理

// 使用敏感数据保护
optionsBuilder.UseSqlServer(Configuration.GetConnectionString("Default"));

性能优化

  • 批量操作使用AddRange/RemoveRange
  • 禁用跟踪查询时使用AsNoTracking
  • 合理配置索引

常见问题排查

  1. 迁移冲突
  2. 解决方案:删除 Migrations 文件夹后重新创建

  3. 连接失败

  4. 检查连接字符串和网络权限

  5. 字段类型不匹配

  6. 使用 [Column] 特性明确指定类型

总结与思考

通过本文的实践,您应该已经掌握了使用 EF Core Model 命令生成数据库表的基本流程。建议尝试以下扩展练习:

  • 为模型添加导航属性实现关系
  • 创建自定义迁移脚本
  • 尝试在不同环境中应用迁移

完整的项目示例已上传 GitHub(假设链接),欢迎参考和提出改进建议。

正文完
 0
评论(没有评论)