.net6 web api使用EF Core,根据model类自动生成表
1.安装EF Core和mysql数据库的nuget包
Microsoft.EntityFrameworkCore
Pomelo.EntityFrameworkCore.MySql
2.创建models文件夹,在文件夹下创建实体类
public class Users{public int Id { get; set; }[Column(TypeName = "varchar(200)"), Required]public string Name { get; set; }[Column(TypeName = "varchar(200)")]public string Email { get; set; }[Column(TypeName = "varchar(200)")]public string age { get; set; }}
3.创建数据库上下文操作类MyDbContext继承DbContext
namespace EfCore
{public class MyDbContext: DbContext{//添加Users实体类public DbSet<Users> Users { get; set; }protected override void OnModelCreating(ModelBuilder modelBuilder){//modelBuilder.Entity<MyModel>()// .HasKey(x => x.Id);// modelBuilder.Entity<Users>()// .Property(e => e.Email)// .IsRequired()// .HasMaxLength(50);modelBuilder.ApplyConfigurationsFromAssembly(typeof(MyDbContext).Assembly);}//构造函数public MyDbContext(DbContextOptions<MyDbContext> option) : base(option){// 如果数据库表不存在则创建Database.EnsureCreated();// 执行自动迁移以将数据库与实体类定义同步Database.Migrate();}}
}
4.在appsettings.json文件添加数据库连接字符串
"ConnectionStrings": {"DbConnectionString": " Data Source=localhost;Database=efcore;AllowLoadLocalInfile=true;User ID=root;Password=root;allowPublicKeyRetrieval=true;pooling=true;CharSet=utf8;port=3306;sslmode=none;"}
5.在Program.cs类实现依赖注入
6.控制器中使用,添加一个名称为UsersController的控制器
[Route("api/[controller]")][ApiController]public class UsersController : ControllerBase{private readonly MyDbContext _context;public UsersController(MyDbContext context){_context = context;}[HttpGet("user")]public ActionResult<IEnumerable<Users>> Get(){return _context.Users.ToList();}}
7.启动项目调用该api接口,发现数据库表成功创建,实现自动迁移