大家好,今天给大家分享一下EFCore,首先我们先知道一下什么是ORM,打开度娘,搜到结果:对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。我们可以通过ORM更简单的操作数据库,EFCore 是一种ORM,它使 .NET 开发人员可以使用 .NET对象操作数据库,避免了像ADO.NET访问数据库的代码,开发者只需要编写对象即可。
接下来给大家通过简单示例讲解一下EFCore的基础使用,我们创建一个控制台程序,并添加一个类库,在类库中中安装:
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
安装过程很简单,就在NUGet里面搜索下载即可,并在控制台程序中下载:Microsoft.EntityFrameworkCore.Design。
接着我们采用DBFirst,去数据库新建数据库和视图,我这边采用之前建的简单例子,太复杂了我可能会讲不明白,大家见谅,数据库大致如下:
表名 | Admin | Students | StudentClass | StudentScore | ViewStuClass | ViewStuScorebyClass |
列名 | AdminName Pwd | StudentId StudentName Gender Age Birthday StudentIdNo StduentAddress ClassId CardIdNo StuImage | ClassId ClassName | StudentId Csharp SQLDB | StudentName ClassName Gender Age StudentAddress | StudentName Csharp sqlDb ClassName |
接下来我们在‘工具’---‘NuGet包管理器’---‘程序包管理器控制台’,打开它,并在里面写入以下一段代码“”,
Scaffold-DbContext "连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Entity -ContextDir Context -Context StuDbContext -Force
等到出现上面的黄色代码就代表已经生成成功,Models层中也有了两个文件夹,如下图;
ok,可以看到在我们数据库中建立的四个表和二个视图都已经对应生成,四个表是Admin,Students,StudentClass,StudentScore,两个视图为ViewStuClass,ViewStuScorebyClass(如何建表,如何建视图这边不说,挺简单)
增删改查
万事具备,接下来我们讲解数据库的增删改查
新增
我们直接上例子:
我们查看数据库,可以发现“学生小萨已经添加成功”
注释:我们利用EFCore操作数据库时,主要是操作DBContext,所以例子中我们也是这样操作的。
修改
还是一样我们直接上例子:
我们查看数据库,可以发现“学生小萨已经修改成功”
删除
我们查看数据库,可以发现“学生小萨已经删除成功”
查询
查询我们这边给大家展示以下功能:
①全部查询;
②条件查询;
③单条查询;
④查询记录数等
接下来我们一一测试:
全部查询
//全部查询
StuDbContext context = new StuDbContext();
var viewstuClass = context.ViewStuClasses.ToList();
foreach (var stu in viewstuClass)
{
Console.WriteLine($"{stu.StudentName} {stu.ClassName} {stu.Gender} {stu.Age} {stu.StudentAddress}");
}
运行结果:
条件查询
//条件查询
StuDbContext context = new StuDbContext();
var viewstuClass = context.ViewStuClasses.Where(u=>u.Gender=="男");
foreach (var stu in viewstuClass)
{
Console.WriteLine($"{stu.StudentName} {stu.ClassName} {stu.Gender} {stu.Age} {stu.StudentAddress}");
}
运行结果:
单条查询
//单条查询
StuDbContext context = new StuDbContext();
var viewstuClass = context.ViewStuClasses.Where(u => u.Gender == "男").FirstOrDefault();
Console.WriteLine($"{viewstuClass.StudentName} {viewstuClass.ClassName} {viewstuClass.Gender} {viewstuClass.Age} {viewstuClass.StudentAddress}");
运行结果:
记录数
//记录数
StuDbContext context = new StuDbContext();
var viewstuClass = context.ViewStuClasses.Where(u => u.Gender == "男").Count();
Console.WriteLine($"记录条数:{viewstuClass}");
运行结果:
结语
好了,今天就分享到这边,下次我们将继续分享EFCore的进阶使用,如事务,存储过程等,还会将其封装成数据访问通用类,敬请期待~~~