代码优先-Code First
非常有用的两篇文章
EF有三种开发模式:Model First,Database First 和 Code First。 本文主要介绍Code First模式,Code First即代码优先,就是先编写业务实体模型类,然后通过程序包管理器控制台创建数据库。
一、安装EntityFramework
在项目上右键菜单,点击“管理NuGet程序包”,搜索“EntityFramework”,在项目中安装最新版本的EntityFramework。
二、修改配置文件
EntityFramework安装完成后,会自动生成一个App.confing文件,内容如下:

<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="v11.0" /> </parameters> </defaultConnectionFactory> </entityFramework> </configuration>
如果不添加数据库连接字符串,数据库默认会声称在App_Data文件夹下,在一般项目中我们还需修改此配置文件,内容如下:

<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <!--<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />--> </configSections> <!--<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="v11.0" /> <parameter value="shz-pc\sqlexpress2012"/> </parameters> </defaultConnectionFactory> </entityFramework>--> <connectionStrings> <add name="SAUnitOfWork" connectionString="Data Source=shz-pc\SQLEXPRESS2012;Initial Catalog=AccountingSys;User ID=sa;Password=sa" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration>
三、创建实体模型类和DbContext
贴出部分实例代码:

/// <summary> /// 用户信息表 /// </summary> public class User : Entity { [Required] [StringLength(50)] /// <summary> /// 用户名 /// </summary> public string Name { get; set; } [Required] [StringLength(20)] /// <summary> /// 登录Id /// </summary> public string LoginId { get; set; } [Required] [StringLength(20)] /// <summary> /// 登录密码 /// </summary> public string Password { get; set; } [StringLength(11)] /// <summary> /// 手机号 /// </summary> public string Mobile { get; set; } [StringLength(100)] /// <summary> /// 邮箱 /// </summary> public string Email { get; set; } [Required] /// <summary> /// 用户状态(0:禁用;1:启用) /// </summary> public int Status { get; set; } }
以下是数据上下文类:

public class SAUnitOfWork : DbContext, IQueryableUnitOfWork { public DbSet<Operation> Operation { get; set; } public DbSet<PurchaseDetail> PurchaseDetail { get; set; } public DbSet<PurchaseHeader> PurchaseHeader { get; set; } public DbSet<Role> Role { get; set; } public DbSet<RoleOperations> RoleOperations { get; set; } public DbSet<SettlementDetail> SettlementDetail { get; set; } public DbSet<SettlementHeader> SettlementHeader { get; set; } public DbSet<User> User { get; set; } public DbSet<UserRoles> UserRoles { get; set; } }
四、启用程序包管理器控制台
在VS菜单栏“工具”→“库程序包管理器”→打开“程序包管理器控制台”:
1.启用 Code First 迁移命令:Enable-Migrations
2.为迁移搭建基架:Add-Migration Initial
3.开始迁移:Update-Database
执行完以上三个命令后,你会发现在你的数据库服务实例中已经生成了数据库:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构