EFCore3.1的基本使用(基于Mysql数据库)
EFCore的基本使用(基于Mysql数据库)
一.依赖包的导入(适用于netcore3.0版以上)
1.创建netcore项目
2.添加依赖包
1.Microsoft.EntityFrameworkCore.Tools(使用与迁移相关操作)
2.Pomelo.EntityFrameworkCore.MySql(连接Mysql)
3.Microsoft.EntityFrameworkCore(EF基础功能包)
4.Microsoft.EntityFrameworkCore.Design
5.Microsoft.EntityFrameworkCore.Tools
二.领域模型(实体类)的建立
1.再Model文件中建立Student实体:
//注意这里引入命名空间
using System.ComponentModel.DataAnnotations;
public class Student
{
public int ID { get; set; }
[StringLength(50)]
public string Name { get; set; }
[StringLength(2)]
public string Sex { get; set; }
[StringLength(11)]
public string Phone { get; set; }
[StringLength(200)]
public string Address { get; set; }
}
2.建立StudnetDbContext上下文实体
//StudnetDbContext继承至DbContext
public class StudentDbContext:DbContext
{
//DbContextOptions实例负责承载应用中的配置信息,如连接字符串,数据库提供商等实例
public StudentDbContext(DbContextOptions<StudentDbContext>options):base(options)
{
}
//针对DbSet<TEntity>的查询,EF会将Linq语句转换为针对底层的SQL语句查询
public DbSet<Student> Student { get; set; }
}
DbContext
是实体类和数据库之间的桥梁,DbContext主要负责与数据交互,主要作用:
1、DbContext包含所有的实体映射到数据库表的实体集(DbSet < TEntity >)。
2、DbContext 将LINQ-to-Entities查询转换为SQL查询并将其发送到数据库。
3、更改跟踪: 它跟踪每个实体从数据库中查询出来后发生的修改变化。
4、持久化数据: 它也基于实体状态执行插入、更新和删除操作到数据库中。
三.配置连接Mysql数据库的信息
1.在startup.cs文件中的ConfigureServices方法中配置使用Mysql
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<StudentDbContext>(options => options.UseMySql(Configuration.GetConnectionString("ConnectionMysql")));
}
2.在appsetting.json配置连接字符串
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"ConnectionStrings": {
"ConnectionMysql": "server=localhost;uid=root;pwd=123456;database=student;"
},
"AllowedHosts": "*"
}
3.创建Student数据库
四.数据库的迁移
1.打开控制台
2.执行迁移
1.执行迁移指令
Add-Migration StudentMigration
2.更新数据库
Update-Database