1、前言
在了解Efcore之前我们先得来了解ORM框架、它的全称为object relation mapping、也叫做对象关系映射、可以通过对象的思想来完成对于数据库的操作;也是基于面向对象的思想应用到数据库的操作。我个人觉得这种思想还是挺不错的、那么我们今天的Efcore就是ORM众多框架中的一种、Efcore全称为Entity Framework Core是由微软推出的一种对象关系映射。并且EF Core 可用作对象关系映射程序 (O/RM),这可以实现以下两点:
- 使 .NET 开发人员能够使用 .NET 对象处理数据库。
- 无需再像通常那样编写大部分数据访问代码。
Efcore相关文档如下:https://docs.microsoft.com/zh-cn/ef/core/ 同时可兼容多种常用的数据库、其中与sqlserver搭配使用效果最好、毕竟一家的厂商嘛。我个人觉得Efcore还是一种比较好的思想、利用我们后台开发语言面向对象的思想去应用到我们数据库上、从开发者而言这其实是一种思想的跨域、只不过Efcore它需要兼容的更多、提供更多的功能导致内部会有大量的反射机制所以性能不是很好、导致很多企业不是很推崇、同时这也是微软的老问题、希望做的广而全、所以从某中程度上说是存在一定的弊端、尽管如此我还是一如既往的支持、接下来准备实操起来、首先是基于Dbfirst的方式来实操、并基于VS2019、SqlServer2014环境那么在实操的过程中按照以下步骤操作
- 创建.Net5控制台应用(EFCoreTest)、测试数据库连接实例是否正常
- nuget引用相关的程序集依赖环境
- 基于脚本生产后台对象模型
- 编写后台代码实现CRUD
2、创建.Net5控制台应用并测试数据库连接实例
名称为EFCoreTest、数据库实例连接正常
3、nuget引用相关的程序集依赖环境
一共需要引入以下依赖包
-
Microsoft.EntityFrameworkCore
-
Microsoft.EntityFrameworkCore.SqlServer
- Microsoft.EntityFrameworkCore.SqlServer.Design
-
Microsoft.EntityFrameworkCore.Tools
安装成功、编译正常
4、基于脚本生产后台对象模型
点击VS2019导航工具栏、尊重Nuget包管理器中的程序包管理器控制台、输入
1 Scaffold-DbContext "Data Source=DESKTOP-C4SF5PK;Initial Catalog=MyBBSDb;User ID=sa;Password=123456" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -ContextDir / -Context MyBBSDbContext -Force
Data Source需要连接数据库的地址信息
成功后控制台项目会根据数据库中的表结构对象生成后台相应的实体、和MyBBSDbContext、表示当前Db连接的实例MyBBSDbContext 、其中包含相应表结构、字段
5、编写后台代码实现CRUD
1 using (var Db=new MyBBSDbContext()) 2 { 3 //此处实例基于MyBBSDb中User表操作数据 4 Console.WriteLine("-----添加数据-----"); 5 User user = new User() { UserName="陈大宝",UserNo="123",Password="&&&",UserLevel=2}; 6 Db.Add(user); 7 Db.SaveChanges(); 8 9 Console.WriteLine("-----查询数据-----"); 10 //根据ID倒序 取出最新一条数据 11 var userdata = Db.Users.OrderByDescending(c => c.Id).FirstOrDefault(); 12 13 Console.WriteLine($"当前ID为{userdata.Id},用户名为{userdata.UserName}"); 17 Console.WriteLine("-----修改数据------"); 18 19 userdata.UserName = "陈大宝啦啦啦"; 21 Db.Update(userdata); 22 Db.SaveChanges(); 23 26 Console.WriteLine("-----删除数据------"); 28 userdata.UserName = "陈大宝啦啦啦"; 30 Db.Remove(userdata); 31 Db.SaveChanges(); 37 38 }
未添加数据前数据库数据为一共为8条:
执行添加代码查询数据库后
1 //此处实例基于MyBBSDb中User表操作数据 2 Console.WriteLine("-----添加数据-----"); 3 User user = new User() { UserName="陈大宝",UserNo="123",Password="&&&",UserLevel=2}; 4 Db.Add(user); 5 Db.SaveChanges();
查看数据库添加后为9条数据
执行修改代码;
1 //根据ID倒序 取出最新一条数据 2 var userdata = Db.Users.OrderByDescending(c => c.Id).FirstOrDefault(); 3 4 Console.WriteLine($"当前ID为{userdata.Id},用户名为{userdata.UserName}"); 5 6 7 8 Console.WriteLine("-----修改数据------"); 9 10 userdata.UserName = "陈大宝啦啦啦"; 11 12 Db.Update(userdata); 13 Db.SaveChanges();
查看数据库;
执行删除代码;
1 Console.WriteLine("-----删除数据------"); 2 3 userdata.UserName = "陈大宝啦啦啦"; 4 5 Db.Remove(userdata); 6 Db.SaveChanges();
查看数据库;删除成功
6、总结
那么以上就是基于.Net5结合Efcore中DbFirst实现简单增删改查功能、