Entity Framework Core使用笔记①
EFCore:是一个orm(Object Relational Mappper)框架,将Domain class转换成数据库的tables;
并且支持大部分常用数据库
1.在visual stadio中建立了.net core的web项目,这里同时建立了EFCore.DomainModel类库存放Model;(这里建立.net core 的类库)
本次先放了书和书的分类两个表
Books.cs类:
namespace EFCore.DomainModel { public class Books { public Guid Id { get; set; } public string Auther { get; set; } public string BookName { get; set; } public DateTime BookOnmarket { get; set; } public Sorts Sort { get; set; }
Sorts.cs类:
namespace EFCore.DomainModel { public class Sorts { //id public Guid Id { get; set; } public string BookId { get; set; } //type public string Types { get; set; } public List<Books> Book { get; set; } } }
分类和书是一对多关系;
2.安装EFcore
使用Nuget-->MIcrosoft,EntityFramework,Core
创建EFCore.Date并在里面使用Nuget搜索Microsoft.EntityFramework.core,这里转的是针对代码的,这里使用mysql,就需要装针对连接mysql的包,在之前EF支持的图里能看到,mysql需要安装Pomelo.EntityFramework.mysql;
3.连接数据库并映射
使用上面安装的包,建立Mycontext,继承Dbcontext,将使用dbset就可以将DomainModel和数据库表映射起来,使用重写OnConfiguring里面是连接数据库的信息,他在Mycontext加载的时候就会去实例化。
class MyContext : DbContext { public DbSet<Book> Books { get; set; } public DbSet<Sort> Sorts { get; set; } //第一次实例化mycontext就会触发,onconfiguring,连接数据库,ef支持迁移 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySql("Server=localhost; Port=3306; Database=mysql; Uid=root; Pwd=root;"); } }
4.数据的迁移
EF的迁移步骤
①.创建Domain Model
②.创建迁移文件
③.应用迁移到数据库,或生成SQL脚本
在这之前需要安装Microsoft.EntityFrameworkCore.Tools
迁移命令执行
执行add-migration initia(启动项要设置成安装包的那个类库)l成功后
里面带时间戳的迁移文件;
下面那个文件是快照文件,记录上一次daomainmodel状态,下次更新如何去处理
执行Update-Database就可以在数据库里创建表了(上面有一个写的datetime,导致我mysql一直报语法错误)
之后会生成三个表
history里记录的实迁移用的是哪个时间戳的文件,这样有利于共同开发。