EFCore CodeFirst与DbFirst都要NuGet
Microsoft.EntityFrameworkCore.SqlServer 核心程序包,封装了关键的核心代码,使用EF必须引用这个包
Microsoft.EntityFrameworkCore.Design 设计包,用于在命令行工具下EF Core开发的工具套件
Microsoft.EntityFrameworkCore.Tools 用于数据库的生成、迁移、生成表等
EFCoreFirst使用流程
1.创建数据库实体映射类
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>
调用
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
string conStr = ConfigurationManager.ConnectionStrings["RecordTest"].ConnectionString;
optionsBuilder.UseSqlServer(conStr);
}