目录
EFCore初识使用
EFCore(Entity Framework Core):是.net core中一个轻量级跨平台的对象关系映射(ORM)框架,它使开发者能够通过面向对象的方式操作数据库而无需编写大量的SQL语句,支持多种数据库(如 SQL Server、SQLite、PostgreSQL、MySQL等),并且与.net core应用程序集成紧密并允许开发者更高效地处理数据访问和数据库交互。
ORM(Object-Relational Mapping):是一种将对象与关系型数据库中的数据表及记录之间进行自动转换的技术,使得开发者能够使用面向对象的编程方式与数据库交互而无需手动编写SQL语句来执行CRUD(创建、读取、更新、删除)操作,常见的ORM如下:
EFCore:微软提供的ORM框架,适用于.net环境,支持数据库模型生成查询等多种功能,是其轻量级的跨平台版本
Dapper:优点:简单上手行为可预期性强;缺点:生产效率低需要处理底层数据库差异。
SqlSugar:非常简洁,适合快速开发和简单的CRUD操作,简单易用,快速上手
FreeSql:功能强大适合复杂场景学习曲线稍高,性能优越尤其在大数据量或复杂查询有优势
EFCore是模型驱动(Model-Driven)的开发思想,Dapper是数据库驱动(DataBase-Driven)的开发思想的,两者没有优劣只有比较,Dapper≠性能高;EFCore≠性能差,EFCore是官方推荐推进的框架,尽量屏蔽底层数据库差异.net开发者必须熟悉,根据的项目情况再决定用哪个。
数据库选择:EF Core是对于底层ADO.NET Core的封装,因此ADO.NET Core支持的数据库不一定被EF Core支持,但EF Core支持目前所有主流的数据库,包括Sql Server、Oracle、MySQL、PostgreSQL、SQLite等,EF Core对于Sql Server支持最完美,如果使用其他数据库只需要改动一些代码,大部分代码的用法基本不变,EF Core是尽量屏蔽底层数据库差异的,接下来博主以MySQL数据库进行举例,不了解该数据库的可以参考我之前的文章:MySQL数据库 。
EF Core环境搭建:EF Core是一个非常强大的ORM工具,提供了简洁的API和良好的性能使得数据库操作更加直观,而且支持高级功能如异步操作和数据库迁移,让开发者能够更加专注于应用的业务逻辑而不必过多关心底层数据库的实现,接下来我们就开始进行开发环境搭建演示使用:
构建实体类:创建与数据库表进行映射的数据结构类型。
namespace test
{
public class Book
{
public long Id { get; set; } // 主键
public string Title { get; set; } // 标题
public DateTime PublishDate { get; set; } // 出版日期
public string Author { get; set; } // 作者
public decimal Price { get; set; } // 价格
public string Description { get; set; } // 描述
}
}
创建配置类:创建实现IEntityTypeConfiguration接口的实体配置类,配置实体类和数据库表的对应关系,因为.net默认已经帮我们做好了约定大于配置,所以配置类我们其实也不需要写,但是这里还是写一下给大家了解一下:
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace test
{
class BookConfig: IEntityTypeConfiguration<Book>
{
public void Configure(EntityTypeBuilder<Book> builder)
{
builder.ToT