ORM知识点分享【1】----EFCore的基础使用

        大家好,今天给大家分享一下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,去数据库新建数据库和视图,我这边采用之前建的简单例子,太复杂了我可能会讲不明白,大家见谅,数据库大致如下:

表名AdminStudentsStudentClassStudentScoreViewStuClassViewStuScorebyClass
列名

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的进阶使用,如事务,存储过程等,还会将其封装成数据访问通用类,敬请期待~~~

  • 24
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值