一、EFCore介绍
Entity Framework Core
是轻量化、可扩展、开源和跨平台版的常用Entity Framework
数据访问技术。EF Core
可用作对象关系映射程序 (O/RM),这可以实现以下两点:
- 使 .NET 开发人员能够使用 .NET 对象处理数据库。
- 无需再像通常那样编写大部分数据访问代码。
EF Core
支持多个数据库引擎。
二、什么是ORM
就是让开发者用对象操作的形式操作关系数据库
代码层面:写C#对象,把C#对象扔给ORM引擎,ORM引擎负责把对象存储到关系数据库里边
取数据的时候 写C#代码 ORM引擎会把C#代码转化为Sql语句到关系数据库取数据,然后把去到的结果通过ORM引擎转化为C#对象,最终拿到的还是C#对象
有哪些ORM:EFcore、Dapper、SqlSugar、FreeSql
三、EFCore和其他的ORM比较
1、Entity Framework Core(EF Core)是微软官方的ORM框架优点:功能强大、官方支持、生产效率高、力求屏蔽底层数据库差异;缺点: 复杂、上手门槛高、不熟悉EFCore的话可能会进坑。
2、Dapper。优点:简单,N分钟即可上手,行为可预期性强;剑点:生产效率低,需要处理底层数据库差异。
3、EF Core是模型驱动(Model-Driven)的开发思想,Dapper是数据库驱动(DataBase-Driven)的开发思想的。没有优劣,只有比较。
4、性能: Dapper等≠性能高; EF Coref性能差。5、EF Core是官方推荐、推进的框架,尽量屏蔽底层数据库差异,.NET开发者必须熟悉,根据的项目情况再决定用哪个。
四、增删改查
1、添加数据
//dbcontext 逻辑上的数据库,并不是真实的
Book book1 = new Book { AuthorName = "lty1", Tittle = "深入浅出EFCore", Price = 1.80, PublicTime = new DateTime(2021, 12, 16) };
Book book2 = new Book { AuthorName = "lty2", Tittle = "深入浅出数据结构", Price = 1.80, PublicTime = new DateTime(2021, 12, 16) };
Book book3 = new Book { AuthorName = "lty3", Tittle = "深入浅出算法分析", Price = 1.80, PublicTime = new DateTime(2021, 12, 16) };
Book book4 = new Book { AuthorName = "lty4", Tittle = "深入浅出MySql", Price = 1.80, PublicTime = new DateTime(2021, 12, 16) };
Book book5 = new Book { AuthorName = "lty5", Tittle = "深入浅出计算机网络", Price = 1.80, PublicTime = new DateTime(2021, 12, 16) };
//把Book加入到逻辑上的Book表中
dbcontext.Book.Add(book1);
dbcontext.Book.Add(book2);
dbcontext.Book.Add(book3);
dbcontext.Book.Add(book4);
dbcontext.Book.Add(book5);
//这会把逻辑上的数据库表,更新到真实的数据库中
await dbcontext.SaveChangesAsync();
#endregion
2、修改
对要修改的数据先查出来在进行修改 保存
var data_Alter = dbcontext.Book.Single(b => b.Tittle == "深入浅出算法分析");
data_Alter.AuthorName = "深入浅出算法分析的AuthorName";
dbcontext.SaveChanges();
3、删除
var data_Delete = dbcontext.Dogs.Single(b => b.Name == "HaSai");
dbcontext.Remove(data_Delete);
dbcontext.SaveChanges();
4、更新
private async void UpdateData()
{
//需要先查询
var books = codeFContext.Books.Where(x => x.Title == "追风筝的人");
//再对查询到的数据进行修改
foreach (var item in books)
{
item.Title = "放学后";
}
//再save更改
await codeFContext.SaveChangesAsync();
}