EFCoreFirst使用流程
1、引入工具包
Microsoft.EntityFrameworkCore.SqlServer 核心程序包,封装了关键的核心代码,使用EF必须引用这个包
Microsoft.EntityFrameworkCore.Design 设计包,用于在命令行工具下EF Core开发的工具套件
Microsoft.EntityFrameworkCore.Tools 用于数据库的生成、迁移、生成表等
2、数量掌握EF core 模型配置
使用Data annotations 配置模型详细请看: https://learn.microsoft.com/zh-cn/ef/ef6/modeling/code-first/data-annotations
使用 fluent API 配置模型:https://learn.microsoft.com/zh-cn/ef/core/modeling/
尽管它们非常灵活,但请记住,DataAnnotations 仅提供你可以对 Code First 类进行的最常用的配置更改。 若要为某些边缘情况配置类,应该查看备用配置机制,即 Code First 的 Fluent API。
3.创建数据库实体
public class Blog{public int BlogId { get; set; }[Required][MaxLength(16)]public string Url { get; set; }public List<Post> Posts { get; } = new List<Post>();}
public class Post{public int PostId { get; set; }public string Title { get; set; }public string Content { get; set; }[Column(TypeName = "date")]public DateTime CreateDate { get; set; }public int BlogId { get; set; }public Blog Blog { get; set; }}
2.新建一个继承DbContext的类作用是配置数据连接、操作数据库表等信息
public class BloggingContext: DbContext{/// <summary>/// Blogs表的操作属性/// </summary>public DbSet<Blog> Blogs { get; set; }/// <summary>/// Posts/// </summary>public DbSet<Post> Posts { get; set; }/// <summary>/// 配置数据连接信息/// </summary>/// <param name="optionsBuilder"></param>protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){optionsBuilder.UseMySql("你的数据库连接字符串");base.OnConfiguring(optionsBuilder);}}
3.添加数据库迁移文件:程序包管理控制台输入:
Add-Migration InitialCreate //InitialCreate是生成迁移文件的文件名,执行此命令后,会生成Migrations文件夹及相关的迁移文件 Update-Database //生成数据库 Script-Migration //生成快照文件
4.增、删、改、查
EFCore DbFist流程
1.在程序包包管理器控制台 中执行以下语句生成 实体类
Scaffold-DbContext "Data Source=WAYLIPC;Initial Catalog=Produce_Mac_Sn;User ID=sa;Password=123456;Integrated Security=True;Encrypt=False;" Microsoft.EntityFrameworkCore.SqlServer -context EfCoreContext -contextdir Data -outputdir Models
参数说明:
-OutputDir *** 实体文件所存放的文件目录 -ContextDir *** DbContext文件存放的目录 -Context *** DbContext文件名 -Schemas *** 需要生成实体数据的数据表所在的模式 -Tables *** 需要生成实体数据的数据表的集合 -DataAnnotations -UseDatabaseNames 直接使用数据库中的表名和列名(某些版本不支持) -Force 强制执行,重写已经存在的实体文件
生成数据库
public EfCoreContext(){Database.EnsureCreated();//在构造函数中加入这个,在没有数据库时会创建数据库.}
增加'应用程式配置文件',便于后续修改或调用数据库路径.
增加'<connectionStrings>'文件
<?xml version="1.0" encoding="utf-8" ?> <configuration><!--数据库路径--><connectionStrings><add name="RecordTest" connectionString="Data Source=WAYLIPC;Initial Catalog=RecordTest;User ID=sa;Password=1987214li;Integrated Security=True;Encrypt=False" /></connectionStrings> </configuration>
调用