首页 > 数据库 >.NET6项目连接数据库方式方法

.NET6项目连接数据库方式方法

时间:2023-05-16 13:14:03浏览次数:38  
标签:文件 appsettings 数据库 options json cs NET6 连接

前言

接上一篇Linux系统下创建dotnet项目,这一篇我们聊聊.NET6环境下dotnet项目连接数据库的方式方法,包括数据库字符串该如何配置。看了很多博主写的文章,连接数据库字符串配置的方式和位置五花八门,这篇文章给大家介绍一下连接数据库字符串的配置方式方法,顺便介绍下一个新创建的dotnet项目的各个模块的作用。

各模块作用

在这里插入图片描述
① Properties -- launchSettings.json

launchSettings.json文件是 ASP.NET Core 应用特有的配置标准,用于应用的启动准备工作,包括环境变量,开发端口等。在launchSettings.json文件中进行配置和右键项目--【属性】--【调试】中所提交的更改的效果是一样的,并且支持同步更新。
②依赖项

依赖项组织了项目开发与运行时所需的DLL,分布在不同的类别下:包、分析器、框架、项目。
③ Controllers

Controllers 目录用于存放MVC编程框架下的控制器类文件。
④ appsettings.json

appsettings.json 是 ASP.NET Core 默认提供的系统配置文件。与 ASP.NET WeForm、ASP.NET MVC 中的 web.config 文件功能类似。

ASP.NET Core 支持利用环境变量来动态配置 JSON 文件。ASP.NET Core 引用了一个特定的环境变量 ASPNETCORE_ENVIRONMENT 来描述应用程序当前运行的环境。这个变量可以被设置为任何你喜欢的值,但是有三个值被约定使用: Development,Staging 和 Production。
⑤Program.cs

Program.cs 是 Asp.Net Core 的入口文件。它负责创建、配置和运行泛型主机(Host),ASP.NET Core应用程序需要在泛型主机中执行。
补充说明:有的同学创建的项目里面没有Program.cs,但是有Startup文件,也是一样的,只是写法略有不同。

添加依赖

添加依赖的命令是dotnet add package xxxx.xxx

//添加SqlServer依赖
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
//添加MySQL依赖
dotnet add package MySql.EntityFrameworkCor
//添加Sqlite依赖
dotnet add package Microsoft.Data.Sqlite.Core

连接数据库字符串到底该写在哪里

通过对各个模块作用的介绍,我们知道连接数据库的字符串肯定是写在appsettings.json文件里面,有的人把连接数据库字符串写在上下文类文件中,或者写在Program.cs文件中,也不是不可以,不过不是规范的写法。举个例子,当你的项目发布部署以后,要求更改新的数据库服务地址,怎么办?我们都知道.NET项目编译以后,所有.cs文件都会被编译为DLL文件,想修改里面的内容就需要重新编译,也就是说之前发布好的项目是不能用了,但是.json文件没有编译。如果你的连接数据库字符串写在Program.cs文件中,那么只能重新编译发布。如果连接数据库字符串写在了appsettings.json中,则只需要修改appsettings.json文件即可。现在知道连接数据库字符串到底该写在哪里了吧。
在这里插入图片描述
在这里插入图片描述
以上都是不规范的写法。

几种数据库的配置方法

下面逐一介绍MySQL、SQL server、sqlite数据的连接方式

MySQL

appsettings.json中添加下面内容,其中MySqlDataBase可以自己定义,见名识意就好哦。后面的内容根据自己的实际情况修改就好。

"ConnectionStrings": {
    "MySqlDataBase": "Server=127.0.0.1;Port=3306;User Id=xxx;Password=xxx;Database=xxx"
  }

Program.cs文件中添加如下内容。其中"MySqlDataBase"为appsettings.json中定义的名字。MynetContext为你数据上下文类名。

builder.Services.AddDbContext<MynetContext>(
    options =>
    {
        options.UseMySql(builder.Configuration.GetConnectionString("MySqlDataBase"), new MySqlServerVersion(new Version(8, 0, 31)));
    });

SQL server

appsettings.json中添加下面内容,其中"MVCSqlContext"可以自己定义,见名识意就好哦。后面的内容根据自己的实际情况修改就好。

"ConnectionStrings": {
    "MVCSqlContext": "Server=localhost;Database=InfoUser;User ID=sa;Password=sa;"
  }

Program.cs文件中添加如下内容。其中"MVCSqlContext"为appsettings.json中定义的名字。MynetContext为你数据上下文类名。

builder.Services.AddDbContext<MynetContext>(
    options =>
    {
        options.UseSqlServer(builder.Configuration.GetConnectionString("MVCSqlContext"));
    });

SQLite

appsettings.json中添加下面内容,其中"DefaultConnection"可以自己定义,见名识意就好哦。后面的内容根据自己的实际情况修改就好。

"ConnectionStrings": {
    "DefaultConnection": "DataSource=app.db;Cache=Shared"
  }

Program.cs文件中添加如下内容。其中"DefaultConnection"为appsettings.json中定义的名字。MynetContext为你数据上下文类名。

builder.Services.AddDbContext<MynetContext>(
    options =>
    {
        options.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection"));
    });

补充:为防止有人不知道在Startup文件怎么写,这里给一个示例:

 public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
 
            services.AddDbContext<PrizeContext>(options => options.UseSqlite(Configuration.GetConnectionString("DefaultConnection")));
        }

注:下一篇将创建实体类,通过EFCore方式自动生成数据库。

标签:文件,appsettings,数据库,options,json,cs,NET6,连接
From: https://www.cnblogs.com/lym003/p/17405046.html

相关文章

  • SQL Server(2008版)还原数据库备份 修改表结构
    昨天接到个小活,前公司一个项目中,有个功能不太正常,需要帮忙排查原因并解决,于是在本地部署环境,还原数据库并运行程序。由于已经从前公司离开3年有余,到这边以后主要是做导航算法相关开发,基本不使用数据库,即便用到的地方也都是Mysql和MongoDB,MSSQLServer被淡忘,操作过程中明明记得有个......
  • 数据库实验
      1。数据库的备份和恢复是数据库管理中非常重要的任务之一,一旦数据库出现故障或数据丢失,备份和恢复操作将决定着数据库恢复的时间和效果。下面是关于数据库备份和恢复实验的设计思路:实验目的:了解数据库备份和恢复的概念、原理、方法,并能够熟练进行备份和恢复操作。实验......
  • 数据库备份与恢复
    数据库的备份和恢复是数据库管理中非常重要的任务之一,一旦数据库出现故障或数据丢失,备份和恢复操作将决定着数据库恢复的时间和效果。下面是关于数据库备份和恢复实验的设计思路:实验目的:了解数据库备份和恢复的概念、原理、方法,并能够熟练进行备份和恢复操作。实验环境:选择......
  • Secure Connection Failed 安全连接失败无效的证书解决
    SecureConnectionFailed安全连接失败无效的证书解决删除配置文件即可 点击菜单帮助 选择更多故障排除信息 找到配置文件 把浏览器关闭打开配置删除 cert9.db即可   添加例外即可进入 ......
  • mysql 数据库 定时 备份到阿里云盘
    仓库地址:gitee:db_backup_script:mysql数据库定时/实时备份数据库到阿里云盘,备份成功后消息可通知到钉钉群、企业微信群、wxpusher(gitee.comgithub:gwt805/db_backup_script:mysql数据库定时/实时备份数据库到阿里云盘,备份成功后消息可通知到钉钉群、企业微信......
  • 【Azure Redis 缓存】使用开源工具redis-copy时遇见6379端口无法连接到Redis服务器的
    问题描述当使用AzureRedis服务时,需要把一个Redis服务的数据导入到另一个Redis上,因为Redis服务没有使用高级版,所以不支持直接导入/导出RDB文件。以编程方式来读取数据并写入到新的Redis服务端,使用开源工具Redis-Copy却遇见了6379端口无法连接的问题。而用redis-cli.exe却......
  • Python数据库篇:sqlite3、mysql、sqlalchemy
    一:sqlite3importsqlite3conn=sqlite3.connect("test.db")cursor=conn.cursor()cursor.execute("createtableuser(idvarchar(20)primarykey,namevarchar(20))")cursor.execute("insertintouser(id,name)values(\'1\�......
  • python 操作 PostgreSQL 数据库,线程并行修改 5w 条数据,性能优化
    python操作PostgreSQL数据库,线程并行修改5w条数据,性能优化110 娃哈哈店长的个人博客 /  433 /  0 / 创建于 3年前  获取新xls表中的所有数据并整理为列表形式返回其实修改的代码量不大,但是要考虑保留之前我们用的函数和方法还要继续能使用。excel2......
  • Docker+jenlins+gitee部署net6
    1.Docker安装。Docker->虚拟化容器技术。Docker基于镜像,可以秒级启动各种容器。每一种容器都是一个完整的运行环境,容器之间互相隔离。1、选择要安装的平台Docker要求CentOS系统的内核版本高于3.10uname-r#通过uname-r命令查看你当前的内核版本安装文档地址2、选择......
  • 如何解决Win10中连接Wifi后,WiFi名称自动生成多余数字?
    1.症状描述比如你的WiFi名称是baicai,但是你连上WiFi之后,你看到你WiFi名称是baicai62.解决方法1)Win+R打开注册表2)进入路径:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\NetworkList\Profiles3)找到相关的WiFi名称,将其删除即可......