.NET Core使用EF Core框架

概述

Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。
EF Core 可用作对象关系映射程序 (O/RM),以便于 .NET 开发人员能够使用 .NET 对象来处理数据库,这样就不必经常编写大部分数据访问代码了。

说简单点,就是在我们做增删改查的时候,不用再写非常繁琐的SQL语句,
在以前,我们写完SQL语句后,查询出来的数据还要手动映射为我们的实体类。但现在,这些东西由EF来帮我们完成

安装EF Core

我们使用NuGet程序包来安装EF Core所需要的包
右键项目> 管理NuGet程序包

  1. Microsoft.EntityFrameworkCore.SqlServer
  2. Microsoft.EntityFrameworkCore.Tools (EF工具包,创建实体)
    在这里插入图片描述
    在这里插入图片描述安装完成之后,我们打开程序包管理控制台
    工具>NuGet程序包管理器>程序包管理控制台
    在这里插入图片描述打开控制台后输入以下命令:

Scaffold-DbContext -Force “Server=LAPTOP-FPRJ0F62\SQLEXPRESS;Database=ShopDB;uid=sa;Password=123;” Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models/DataModels

命令格式:

Scaffold-DbContext -Force “Server=服务器名;Database=数据库名;uid=账户;Password=密码;” (EF组件名)Microsoft.EntityFrameworkCore.SqlServer -OutputDir (实体类存储位置)Models/DataModels

执行命令后,系统会自动根据表创建实体类
在这里插入图片描述这里系统会创建一个继承了DBConext类的ShopDBContext,这个ShopDBContext是根据你的数据库名生成的,这个类是连接数据库的桥梁

使用EF Core增删改查

单表查询

这里我们创建一个asp.net mvc类型的项目
查询数据非常简单

class Program
    {
        static void Main(string[] args)
        {
            GetProductList();
        }
		//获取所有产品
        public static void GetProductList()
        {
            using (ShopDBContext db=new ShopDBContext())
            {
                var produces = db.Products;
                Console.WriteLine("编号\t产品名称");
                foreach (var item in produces)
                {
                    Console.WriteLine("{0}\t{1}",item.Id,item.Name);
                }
            }
        }
    }

执行结果:
在这里插入图片描述在这里插入图片描述
在执行db.Products的时候,EF并不会立即去数据库查询,他是先定义好了一组SQL语句,当遇到ToList()或者是循环的时候,他才会去数据库查询数据

插入数据

public static void InsertProduct()
        {
            using (ShopDBContext db = new ShopDBContext())
            {
            	//实例化一个Products 类,数据库的ID是自增的,所以新增数据的时候,不需要添加ID
                Products products = new Products()
                {
                    Name = "C#从入门到精通"
                };
                //添加一行数据
                db.Products.Add(products);
                //只有在执行db.SaveChanges()的时候,才会去保存数据
                //db.SaveChanges会返回受影响行数
                int res= db.SaveChanges();
                Console.WriteLine(res);
            }
            
            
        }

执行结果:
在这里插入图片描述
在这里插入图片描述新增数据成功,新增数据的时候一定要db.SaveChanges,切记切记

修改数据

我们就修改下我们刚刚新增的数据
在修改数据的时候,要先查询出数据,EF要确保数据库有这条数据才去修改

public static void UpdateProduct()
        {
            using (ShopDBContext db = new ShopDBContext())
            {
                //Find()可以按照ID查询数据
                Products products = db.Products.Find(11);
                //修改数据
                products.Remark = "C#从入门到入坟";
                products.Price = 30;
                //保存数据
                int res = db.SaveChanges();
                Console.WriteLine(res);
                
            }
        }

在修改的时候,就不需要执行db.Products.Add();
执行结果:
在这里插入图片描述
在这里插入图片描述

删除数据

和修改数据一样,我们要先从数据库查询出这条数据,然后在进行删除

public static void DeleteProduct()
        {
            using (ShopDBContext db = new ShopDBContext())
            {
                //Find()可以按照ID查询数据
                Products products = db.Products.Find(11);
                db.Remove(products);
                //保存数据
                int res = db.SaveChanges();
                Console.WriteLine(res);

            }
        }

使用db.Remove(products);删除数据

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值