asp.net core与EF Core入门基本操作
asp.net项目主要特征
文件结构
- 类比pom文件: .csproj 引入 NuGet 包,例如ERP项目可以叫做erp.csproj
- 类比application.yml文件:appsettings.json
- 类比springApplication类:Program.cs
- .java文件类比.cs文件
- launchSettings.json:项目特殊配置
- .http文件:VS2022内置的轻量级 HTTP 请求测试工具,类似脚本文件
重要记忆点
- 对象生命周期
手动完成依赖注入的登记时,常常用到AddTransient、AddScoped、AddSingleton,大致区别是:
Transient:每次用都 new 一个;
Scoped:一次 HTTP 请求共享一个;
Singleton:整个应用共用一个;
-
请求处理链Middleware
在启动类Program.cs中,调用app.UseAuthentication()、app.MapControllers()等,组装web请求处理链路(pipeline),使得HTTP Request经过Authentication组件处理、到达Controller层。
这个就类比于 拦截器 + filter + AOP 在springboot项目中的地位。 -
其他技术类比
Kestrel(.Net) 类比 Tomcat(Java):Web服务器;
EF Core 类比 SpringData JPA:对象关系映射(ORM)框架;
MSBuild + NuGet 类比 Maven:构建项目+管理依赖包;
DbSet -
中央版本控制
如果项目启用了中央版本管理,版本可能写在 Directory.Packages.props,.csproj 只写包名。
EF core框架连接Mysql数据库
- Nuget安装依赖,这里我使用的有MySql.EntityFrameworkCore;
- 保存连接配置(ConnectionStrings),在在appsettings.json中是明文记录,通过dotnet user-secrets可以密文记录;
- 定义与数据库表对应的实体类,例如Product类;
- 配置DB上下文DbContext子类,例如ProductContext : DbContext;
- 在program.cs中手动依赖注入。
- 首先获取连接配置GetConnectionString("DefaultConnection"),
- 然后指定Mysql类型UseMySQL(connectionString),
- 手动注册ProductContext服务,builder.Services.AddDbContext
()。
- 假设Mysql中数据库已存在,此处先通过app.MapGet()简单映射Get接口,检查是否已经连接:dbContext.Database.CanConnectAsync(cancellationToken)。
EF Core migrations
是什么?
Migrations是EFCore中管理数据库架构变更的机制,通过将C#模型类的更改转换为可追踪的SQL脚本,实现数据库与代码结构的同步。
-
第一个迁移
dotnet ef migrations add InitialCreate 指示 EF Core 创建名为 InitialCreate 的迁移,会在项目的目录下生成一个Migrations文件夹,该文件夹下包含迁移生成的代码,其中
_.cs:The main migration file which includes migration operations in the Up() and Down() methods.
The Up() method includes the code for creating DB objects(创建db实体) and Down() method includes code for removing DB objects(删除db实体).包含表名、字段名、字段类型、字段约束、数据库编码等关键的建表信息。
_.Designer.cs:The migrations metadata file(操作元数据) which contains information used by EF Core.
ModelSnapshot.cs:A snapshot of your current model. This is used to determine what changed when creating the next migration.
-
部署策略
添加迁移Migrations后,需要将其部署并应用到数据库。
- 本地开发测试时,最简单的方式是命令行dotnet ef database update,这将创建数据库,并将新的迁移应用到该数据库(自动建表)。
- 生产环境下,必须使用SQL 脚本方式实现迁移,显式控制具体的迁移行为。
-
更新迁移和数据库架构
数据库和表结构有变化时,需要更新迁移,更新时必须新定义一个迁移类名,如下依次执行命令。dotnet ef migrations add InitialCreate_xxx dotnet ef database update改一下ProductImage实体类的字段,Path改为Url,依次执行以上两个命令,会生成增量迁移类文件,数据库里ProductImage表字段也会更新。

浙公网安备 33010602011771号