.NET Core使用EF Core框架_.net core ef-程序员宅基地

技术标签: C#  core使用ef框架  .net core  ORM——Dapper  

Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。
EF Core 可用作对象关系映射程序 (O/RM),以便于 .NET 开发人员能够使用 .NET 对象来处理数据库,这样就不必经常编写大部分数据访问代码了。core不像framwork一样可以在项目信件中直接选择ado.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);删除数据

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39569480/article/details/110956156

智能推荐

CSDN日报19228——这4点微不足道的改变,正在带我起飞_csdn博客-程序员宅基地

文章浏览阅读2.8k次。程序人生 | 这4点微不足道的改变,正在带我起飞作者:沉默王二3个月前,我完全不懂什么叫个人品牌。我在CSDN上纯粹是为了写而写,完全不知道文章的作者——“沉默王二”就是我的个人品牌,就是我以后可以靠它生存的金字招牌。我在2015年就成为CSDN的博客专家了,排名达到1107,但竟然籍籍无名,除了七八个出版社的编辑找我写书外,再没有别的资源链接到我——“变现”和我之间隔着一条难以逾越的“..._csdn博客

白色简洁的瑞班克个人博客网站-程序员宅基地

文章浏览阅读101次。链接:http://pan.baidu.com/s/1eSqSY8E密码:yqaf转载于:https://www.cnblogs.com/wordblog/p/6804750.html_白色博客网站

java-poi实现:合并汇总不同ecxel的同名sheet页数据_java 对excel 数据汇总-程序员宅基地

文章浏览阅读705次。java-poi、excel操作_java 对excel 数据汇总

C++ LeetCode 171 EXCEL表列序号_计算excel的列序号c++-程序员宅基地

文章浏览阅读152次。给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...示例 1:输入: “A”输出: 1示例 2:输入: “AB”输出: 28示例 3:输入: “ZY”输出: 701其实就是26进制转10进制class Solution {public: int titleToNumber(string s) { int_计算excel的列序号c++

[Erlang 0052] Erlang otp_src_R15B01 Released_otp_src_r15b01.tar.gz-程序员宅基地

文章浏览阅读729次。Bug fix release : otp_src_R15B01Build date : 2012-04-02This is R15B01, the first maintenance release for the R15B major release.You can find the README file for the release at http_otp_src_r15b01.tar.gz

Python 基础系列 5 - Set 去重原理_python set 底层如何去掉重复元素原理 数组去重-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏3次。在上篇文章《[哈希值和可变性Hash value and mutability](https://blog.csdn.net/wumingxiaoyao/article/details/108912543)》最后说到 set 去重问题,所以这篇主要是通过实践来研究一下 set 去重背后的故事,当然也是参考了网上一些资料得到了一些启发,感谢那些陌生的喜欢分享的博友们。想了解更多 Python 基础序列文章,请参考 [Python 基础系列大纲](https://blog.csdn.net/wumingxia_python set 底层如何去掉重复元素原理 数组去重

随便推点

Java 中的常见错误和可能的错误(转)_exception in thread "thread-3" java.lang.runtimeex-程序员宅基地

文章浏览阅读1.9k次。 0、 需要标识符 a) 不在函数内 1、 非法表达式开始 b) 可能:丢失括号 . 2. no data found a) 可能:setInt(1,100)中,没有100这个值 3. 找不到符号 a) 可能:没导入包 4. 指定了无效URL a) 可能:数据库名或IP错误,即连接出错 5. 类路径没有找到 a) 可能: ClassNotFoundException: oracle.jdbc.dr_exception in thread "thread-3" java.lang.runtimeexception: java.lang.nullpoi

Mysql基础部分(12)---数据的增删改-程序员宅基地

文章浏览阅读198次。以往内容:Mysql基础部分(1)—基础操作指令与语法规范Mysql基础部分(2)—基础查询Mysql基础部分(3)—条件查询Mysql基础部分(4)—排序查询Mysql基础部分(5)—常见函数Mysql基础部分(6)—分组函数Mysql基础部分(7)—分组查询Mysql基础部分(8)—sql99语法Mysql基础部分(9)—子查询Mysql基础部分(10)—分页查询Mysq...

使用matlab绘制世界地图并根据经纬度绘制点位(附m_map的下载与安装说明)_matlab根据经纬度画地图-程序员宅基地

文章浏览阅读6.8w次,点赞74次,收藏410次。使用matlab绘制世界地图有两种方法(自己使用过的,可能有别的我不了解的方法):第一种是worldmap和geoshow;第二种是利用m_map工具箱;下面分别介绍这两种方法。1.worldmap & geoshowworldmap和geoshow是matlab中绘图工具箱的两个绘图函数,直接调用即可。worldmap的语法:worldmap region %r..._matlab根据经纬度画地图

使用summary时遇到AttributeError: ‘list‘ object has no attribute ‘size‘的错误_list' object has no attribute 'size-程序员宅基地

文章浏览阅读5.5k次。出现改错时,意思就是本来因该是tensor的地方你写的是list,所以出现了这个错误。对我个人而言,我的错误出现在模型的forword函数中,我的模型有多个输入,而我是以list的形式传入了多个输入,即将多个输入作为了一个整体传给了模型。而在summary中会计算模型的输入形状,即其会使用到输入的.size属性,而当我传入的是list时,由于list没有.size属性,所以报了这个错。正确的的做法是将这多个输入作为多个tensor分开传入,而不是作为一个list整体。如下: def forward_list' object has no attribute 'size

新年第一天 | 恶补新一季《黑镜》的同时,营长又深入扒了扒它那擅长机器学习的新爸爸是如何赚钱的-程序员宅基地

文章浏览阅读4.3k次。关注『AI科技大本营』的各位小伙伴,新年好!营长祝愿大家天天都是18岁!跟放假休息的各位一样,元旦假期的营长着实也不想干活……想起前两天刚刚更新的《黑镜》第四季还没有跟,营长便决定在新年的第一天恶补一下科技和AI的黑暗面。第1集,《联邦星舰卡利斯特号》:“柯克船长”——咳,一直被老板和同事精神虐待的游戏公司老码农,却拥有一台能通过DNA来复制意识的机器,于是老码农变身猥琐男,把老板和同事的意识上传_黑镜鳄鱼的眼泪

杰里之双麦降噪原理篇_双麦克风降噪原理-程序员宅基地

文章浏览阅读3.4k次。耳机有两颗麦克风,一颗在顶部,一颗在末端底部,顶部的用来拾取环境噪音,底部的用来拾取通话。在嘈杂的环境中,两颗麦克风拾取的噪音将会反向叠加用来抵消噪音降噪。实际通话过程中,确实非常有效,官方给出的数据是时速30公里/小时的风噪可正常通话,可见其实力非凡。..._双麦克风降噪原理

推荐文章

热门文章

相关标签