0

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

 11 months ago
source link: https://www.cnblogs.com/lym003/p/17405046.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

接上一篇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方式自动生成数据库。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK