您的位置:首页 > 游戏 > 游戏 > 莱芜信息港房产_网站建站建设怎么做_浏览器大全网站_谷歌外链工具

莱芜信息港房产_网站建站建设怎么做_浏览器大全网站_谷歌外链工具

2024/9/21 13:52:52 来源:https://blog.csdn.net/2301_77171572/article/details/142380215  浏览:    关键词:莱芜信息港房产_网站建站建设怎么做_浏览器大全网站_谷歌外链工具
莱芜信息港房产_网站建站建设怎么做_浏览器大全网站_谷歌外链工具

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。

源码指引:github源码指引_初级代码游戏的博客-CSDN博客


        实体框架 EntityFramework,EF,是操作大量数据库表的最快捷开发方式。EntityFrameworkCore是EntityFramework5.x、6.x的替代(但是无法升级,我们已经习惯了被微软坑)。

        本文演示如何使用Visual Studio 2022创建EntityFrameworkCore来操作mysql数据库。

目录

一、安装依赖项

二、从数据库生成模型(反向)

2.1 程序包管理器控制台

2.2 执行创建命令

三、执行代码读取并遍历数据


一、安装依赖项

        用nuget给项目安装如下依赖项(这些依赖项本身互相依赖,可以自动安装被依赖的项目,但是必须单独安装才会检查更新) :

MySql.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Relational
Microsoft.EntityFrameworkCore

        其中第一个“MySql.EntityFrameworkCore”是针对mysql的特定功能的实现(每种数据库都有一个对应的包),来自Oracle公司,也就是mysql的母公司,所以这个是官方版本。其余都是来自微软公司,是公共基础功能。

        注意一下安装的版本,我安装的时候除了第一个是8.0.5外其余都是8.0.8,公共基础部分版本必须一致。

二、从数据库生成模型(反向)

        因为大部分情形数据库是在编写代码之前设计并生成的,所以我们需要从已有的数据库生成模型,这需要使用一个奇怪的命令:Scaffold-DbContext。

        其实就是执行命令行。

2.1 程序包管理器控制台

        打开程序包管理器控制台,只能从VS的菜单打开:【工具】-【NuGet包管理器】-“程序包管理器控制台”:

        打开之后是这样:

 

        如果解决方案包含多个项目,需要手工选择默认项目(并没有自动选择当前项目),然后必须把鼠标点在提示符“PM>”后面才能输入或粘贴内容。

2.2 执行创建命令

        命令格式如下:

Scaffold-DbContext "server=地址;userid=用户名;pwd=密码;port=3306;database=库名;sslmode=none;allowPublicKeyRetrieval=true;" MySql.EntityFrameworkCore -OutputDir Models -Force

        第一个参数是连接字符串,内容很容易理解。注意一下“allowPublicKeyRetrieval=true;”,缺少这个可能会遇到报错“Retrieval of the RSA public key is not enabled for insecure connections.”。

        第二个参数是用来访问mysql的包的名字。

        再往后的参数就很容易理解了。 

        执行完毕会看到项目里面生成了Models目录,下面有几个文件:

  • 库名Context.cs,总入口,数据库上下文类,里面有每个数据表对象
  • 表名.cs,每个表一个,对应表结构

        文件内容都很简单,打开看一下就明白了。最困难的部分都隐藏在上下文对象的基类DbContext里面了。

三、执行代码读取并遍历数据

        下面是全部的执行代码:

			{using var db = new 库名Context();var records=db.表名;foreach (var item in records){Log(item.col1);}}

        就这么几句就完成了连接数据库、读取表数据、遍历数据的功能。

        确实比手写强多了。


(这里是文档结束)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com