概述
Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework数据访问技术。 简单来说EFCore是一种ORM的技术。
ORM是什么?
ORM(Object Relational Mapping),让开发者用对象操作的形式操作关系型数据库。
常见的ORM
- EF Core
- Dapper
- SqlSugar
- FreeSql
使用
首先新建个.NET Core控制台项目,然后新建Book.cs类文件
输入以下内容
public class Book
{
public long Id { get; set; } //主键
public string Title { get; set; }//标题
public DateTime PubTime { get; set; }//发布日期
public double Price { get; set; }//单价
public string AuthorName { get; set; }//作者名字
}
安装NuGet包,命令如下(如果项目不是.NET 6.0以上版本可能会报错)
Install-Package Microsoft.EntityFrameworkCore.SqlServer
新建BookConfig.cs类,内容如下
class BookConfig : IEntityTypeConfiguration<Book>
{
public void Configure(EntityTypeBuilder<Book> builder)
{
//表示实体类对应的数据库表的名字为T_Books
builder.ToTable("T_Books");
//这里没有配置各个属性子在数据库中列名和数据类型,EF Core将会默认把属性的名字作为列名,并且以属性的类型来推断数据库表中各列的数据类型
}
}
创建一个继承自DbContext类,叫TestDbContext
class TestDbContext : DbContext
{
public DbSet<Book> Books { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.UseSqlServer("Server=.;Database=demo1;Trusted_Connection=True;MultipleActiveResultSets=true;Encrypt=True;TrustServerCertificate=True;");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//从当前程序集中加载所有的IEntityTypeConfiguration
modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
}
}
为了使用EF Core生成数据库工具,NuGet为项目安装Microsoft.EnityFrameworkCore.Tools
包,
Install-Package Microsoft.EntityFrameworkCore.Tools
执行Add-Migration命令
项目生成文件夹
执行Update-database
命令,数据库出现对应的表
操作数据库
新增数据
static async Task Main(string[] args)
{
using (TestDbContext ctx = new TestDbContext())
{
Book b1 = new Book
{
AuthorName = "张三",
Title = "张三的标题",
Price = 59.8,
PubTime = new DateTime(2019, 3, 1)
};
ctx.Books.Add(b1);
await ctx.SaveChangesAsync();
}
}
查询数据
var Book = ctx.Books.Single(b => b.Title == "张三的标题");
Console.WriteLine(Book.AuthorName);
删除数据
Book book = ctx.Books.Single(b => b.Id == 2);
ctx.Books.Remove(book);