添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
SQLIte 操作方便,简单小巧,这里笔者就不再过多介绍,感兴趣可以到以下博文 https://blog.csdn.net/qq_31930499/article/details/80420246 文章介绍创建ASP.NET Core 程序,创建模型、上下文,生成数据库,对数据库增删查改。 并对每个过程进行详细介绍,使初学者尽快了解内容和相关知识,避免对某一知识点怀疑、卡在某个位置。

1 新建ASP.NET Core MVC 应用


1.1 新建MVC应用


打开Visual Studio 2017,新建 ASP.NET Web应用程序 ,选择 MVC(模型视图控制器)。


微信图片_20220426162737.png


微信图片_20220426162838.png


1.2 引入NuGet 包


需要 引入


引入教程

点击

依赖项

-右键

--管理NuGet 程序包


微信图片_20220426162745.png

轮流输入并安装 microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Sqlite,下面附过程


注:

版本请选择与自己 ASP.NET Core 版本接近的。

笔者版本 ASP.NET Core 版本为 2.1 ,选择的 NuGet 包版本为 2.11。

如果你的 .Net Core 是最新的,那么 NuGet 也选最新的即可。

如果你选择版本后,发现报错,可以再进入 NuGet  重新删除安装。

出现更新提示千万不用更新。


微信图片_20220426162750.png


微信图片_20220426162755.png


2 新建模型和上下文


这一步建立模型和上下文,后面将会根据这里的代码生成数据库和数据库表!

需要建立一个上下文类和模型类,把模型类包含在上下文类中,上下文类中包含进来的模型类,将会生成对应的数据库表。


下面这代码不用自己操作,只需要看就行。(注意红色加粗部分)



上面代码,有三个类,

2.1 新建模型类


上面代码把模型类、上下文类放到同一个文件 SqlContext.cs,这样可读性不太好。

因为一个模型类,代表一个数据表,上下文类相当于一个配置类,一个数据库有几十个表,每个表有几个列,这样会使文件内容过于复杂。

我们可以降低耦合,每个类文件只存在一个类,每个类代表一个表,你要创建几个表,就对应写几个类。


实际操作

在 Models 文件夹中


如图


微信图片_20220426162803.png


注:

一个模型类  对应 一个数据表(Table)

模型类的一个属性  对应一个列。

模型类只应出现属性,不应该出现方法等。

笔者这里只写一个表,如果你想要多个表,可以新建其它类,然后在上下文类中加入。

2.2 新建上下文


上面已经建立模型类,模型类将成为数据表(Table)本身。然而他们不能直接对应生成数据表,需要上下文来对模型类映射成数据表,不然他们只是普通的类。

Models 目录新建 类 MyContext.cs


微信图片_20220426162809.png

在头部引入 EF( EntityFrameworkCore )

重写 MyContext


步骤1

步骤2


在MyContext类中写一个构造函数

public MyContext(DbContextOptions<MyContext> options) : base(options)
        }


这个构造函数涉及到依赖注入,这里不再赘述,只需要知道这个构造函数能够配置相关设置。

这里的构造函数内容为空,因为暂时没有什么要配置的。

步骤3


在构造函数下面加上代码,对模型类进行映射。



注:

上面代码表示以模型类Users为基础,在数据库中生成 名为 Uaa 的 表。


一个上下文对应 一个 数据库,上下文类 MyContext,Context 前面的部分将成为数据库名称。例如 asdwadaaContext,将生成数据库 asdwadaa。


一个模型类  对应 一个数据表(Table)


完整代码如下

image


生成的效果图预览


微信图片_20220426162817.png

3 配置服务


为了让应用生成数据库、使用到这个数据库,需要在 Startup.cs 增加代码

在头部引入三个 库



然后为 应用注入服务,有以下方式

(后面再解释作用,现在先了解,不用加)


1 直接写字符串

在 Startup.cs 增加代码



2 使用JSON

在 appsettings.json 文件加入内容(红色部分)



然后 在 Startup.cs 增加代码



注:

以上两种方式,connecttext 变量的作用是获取数据库连接字符串,此变量没有特殊意义,只是为了增加可读性。


SQLite的连接字符串,只需要写  "Filename=[绝对路径]"

services.AddDbContext<MyContext>(options=>options.UseSqlite(“连接字符串”));
表示
向应用注入DbContext (数据库上下文服务),注入的上下文类型为 MyContext>

(options=>options.UseSqlite(“连接字符串”)

是 lambda 表达式,表示使用 sqlite 数据库,参数是连接字符串。Lambda 表达式属于C# 基础知识,不会的话,先记着,以后查找资料。


来实际操作


请使用复制上面 方式一 的代码,然后在 Startup.cs 类 -- ConfigureServices 方法里加入


微信图片_20220426162823.png

直接复制下面代码覆盖 ConfigureServerices


注:

SQLite 数据库文件,可以不加后缀名,但加上后缀名会便于别人识别这是一个数据库的文件,后缀名不限,可以为 .DB、.SQLite、SQLite3等。

4 生成数据库


点击

工具

-NuGet 包管理器

--程序包管理器控制台


微信图片_20220426162832.png

输入

等待结束后在输入

如图


微信图片_20220426162838.png

然后你会发现解决方案管理器,多了 Migrations 目录和一些文件,F:\ 目录也多了一个MY.DB文件


5 使用工具管理SQLite文件


生成数据库文件后,会发现无法直接打开的,即使是 VS2017 也不行。

这时可以使用工具 SQLite Expert Professional ,来对 SQLIte 数据库进行管理。

下载地址 http://xzc.197746.com/SQLiteExpert5.zip

软件介绍 https://www.cr173.com/soft/36343.html

安装好软件后,即可打开数据库文件。

软件打开数据库文件教程:


微信图片_20220426162842.png

微信图片_20220426162846.png

微信图片_20220426162850.png


6 生成增删查改基架


这时候可以在程序对数据库进行操作,对于如何使用,最好去看微软的Entity Framework文档。

笔者这里给出一个简单的示例。


步骤 1

在 Controller 目录,右键点击 添加 -- 新建基架的项目


微信图片_20220426162853.png


步骤 2

点击 视图使用 Entity Framework 的 MVC 控制器


微信图片_20220426162858.png

模型类 选择 Users ([项目名称] .Models)

数据库上下文选择 MyContext ([项目名称] .Models )

点击 添加

微信图片_20220426162905.png

步骤3

这时可以看到

Controller 多了 UsersController.cs 文件

Views 多了 Users 目录

请点击 运行 或按 F5 ,启动网站

在网站后面加上 Users

例如 https://localhost :[实际端口]/ Users,就可以对Users表为所欲为了


微信图片_20220426162911.png

步骤4  添加数据


点击 Create new


微信图片_20220426162918.png

结果

微信图片_20220426162925.png

微信图片_20220426162930.png

7 填写数据不能为空


注:这里涉及到特性、数据验证,笔者不再赘述,读者可以先了解,然后翻译别的文章。

经过上面操作,我们已经可以对数据库进行操作,实际上,虽然可以操作数据,可是如果我想设置某个项必须填写呢,某个项的格式必须是手机呢?总不能让用户随便填吧?


打开 Users.cs

添加引用



修改Users类的代码如下



运行网站,打开 URL/Users,点击 Create New,然后不用填写内容直接提交,会发现

微信图片_20220426162939.png


填写其它项,然后在 Number一项乱填数字,会发现


微信图片_20220426162948.png

这个就是模型验证。

它不需要写什么代码,只要在属性上面加上 [特性]即可。

这方面知识,请另外查阅。


注:

1.什么是SQLite SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。 在sqlite中,数据库的信息是存储在一个文件中的,这种特性非常适合个人的小项目开发 Python中内置数据库!SQLite使用指南! ⛵
使用Python内置库SQLite,可以方便地完成建表、插入数据、查询数据等数据库操作,也可以配合pandas进行灵活使用!高效工具库get!
MongoDB数据库基础【完整版】:简介和常用命令、数据库&集合以及文档的增删改查、MongoDB与Python交互(附源代码)2
MongoDB数据库基础【完整版】:简介和常用命令、数据库&集合以及文档的增删改查、MongoDB与Python交互(附源代码)
MongoDB数据库基础【完整版】:简介和常用命令、数据库&集合以及文档的增删改查、MongoDB与Python交互(附源代码)
MongoDB数据库基础【完整版】:简介和常用命令、数据库&集合以及文档的增删改查、MongoDB与Python交互(附源代码)
网上下载的用EF做的小项目,结果没有配有数据库的,用VS打开来看了一下,看到Migrations文件夹,应该可以用EF命令来生成这个数据库了 打开appsettings.json文件,可以看到他用了三个数据库的,我把他的三个数据库连接字符串都改为一样的,先在本地数据库里创建一个空白的数据库efde...
原文:学习ASP.NET Core Razor 编程系列十一——把新字段更新到数据库 学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.
DotNetCore跨平台~EFCore连接Mysql的方式
在.net frameworks的ef里连接mysql我们已经测试通过了,而在dotnet core里的efCore上去连接mysql我们需要测试一下,并且在测试过程中出现了一些问题,当然最后也是解决了,下面总结一下,分享给大家! mysql项目的依赖包 数据上下文和连接串 添加模块扩展 业务层注入 mysql项目的依赖包 Microsoft.