千家信息网

ASP.NET Core怎么使用EF SQLite对数据库增删改查

发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,这篇文章将为大家详细讲解有关ASP.NET Core怎么使用EF SQLite对数据库增删改查,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1 新建A
千家信息网最后更新 2025年01月25日ASP.NET Core怎么使用EF SQLite对数据库增删改查

这篇文章将为大家详细讲解有关ASP.NET Core怎么使用EF SQLite对数据库增删改查,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1 新建ASP.NET Core MVC 应用

1.1 新建MVC应用

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

1.2 引入NuGet 包

需要 引入

  • microsoft.EntityFrameworkCore

  • Microsoft.EntityFrameworkCore.Sqlite

引入教程

点击

依赖项

    -右键

      --管理NuGet 程序包

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

注:

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

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

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

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

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

2 新建模型和上下文

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

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

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

using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using Microsoft.EntityFrameworkCore;namespace WebApplication1.Models{    public class SqlContext:DbContext    {        public SqlContext(DbContextOptions Options):base(Options)        {        }        public DbSet A { get; set; } //在数据库中生成数据表A    }    public class A    {        public int ID { get; set; }          }    public class B    {        public int ID { get; set; }    }}

上面代码,有三个类,

2.1 新建模型类

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

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

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

实际操作

在 Models 文件夹中

        public int ID { get; set; }       //主键        public string Name { get; set; }  //用户名称        public int Age { get; set; }    //用户年龄        public int Number { get; set; } //用户手机号码

如图

注:

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

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

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

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

2.2 新建上下文

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

在 Models 目录新建 类MyContext.cs

在头部引入 EF(EntityFrameworkCore )

using Microsoft.EntityFrameworkCore;

重写 MyContext 类

步骤1
  public class MyContext改成    public class MyContext:DbContext    //表示该类为上下文类,数据库名称为 My,类名称为什么,数据库名就为什么
步骤2

在MyContext类中写一个构造函数

        public MyContext(DbContextOptions options) : base(options)        {        }

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

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

步骤3

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

        public DbSet Uaa { get; set; }//Dbset  映射成一个表//Dbset   里面的Users即为使用的模型类//Uaa      Users 类在数据库生成的名称

注:

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

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

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

完整代码如下

using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using Microsoft.EntityFrameworkCore;namespace WebApplication1.Models{    public class MyContext:DbContext    {        public MyContext(DbContextOptions options) : base(options)        {        }        public DbSet Uaa { get; set; }    }}

生成的效果图预览

3 配置服务

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

在头部引入三个 库

using WebApplication1.Models;  //可能命名不同using Microsoft.EntityFrameworkCore;using Microsoft.EntityFrameworkCore.Sqlite;

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

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

1 直接写字符串

在Startup.cs 增加代码

            string connecttext = "Filename=F:\\MY.DB";            services.AddDbContext(options=>options.UseSqlite(connecttext));

2 使用JSON

在appsettings.json 文件加入内容(注释部分)

{  "Logging": {    "LogLevel": {      "Default": "Warning"    }  },  "AllowedHosts": "*",  //注释部分  "ConnectionStrings": {    "MyContext": "Filename=F:\\MY.DB"    //注释部分  }}

然后 在 Startup.cs 增加代码

            string connecttext = Configuration.GetConnectionString("MyContext");            services.AddDbContext(options=>options.UseSqlite(connecttext));

注:

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

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

services.AddDbContext(options=>options.UseSqlite("连接字符串"));

表示

    向应用注入DbContext (数据库上下文服务),注入的上下文类型为 MyContext>

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

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

来实际操作

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

直接复制下面代码覆盖ConfigureServerices

public void ConfigureServices(IServiceCollection services)        {            services.Configure(options =>            {                // This lambda determines whether user consent for non-essential cookies is needed for a given request.                options.CheckConsentNeeded = context => true;                options.MinimumSameSitePolicy = SameSiteMode.None;            });            string connecttext = "Filename=F:\\MY.DB";            services.AddDbContext(options => options.UseSqlite(connecttext));            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);        }

注:

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

4 生成数据库

点击

  工具

    -NuGet 包管理器

      --程序包管理器控制台

输入

Add-Migration InitialCreate

等待结束后在输入

Update-Database

如图

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

5 使用工具管理SQLite文件

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

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

下载地址https://www.yisu.com/database/265.html

软件介绍https://www.yisu.com/database/265.html

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

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

6 生成增删查改基架

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

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

步骤 1

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

步骤 2

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

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

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

点击 添加

步骤3

这时可以看到

Controller 多了 UsersController.cs 文件

Views 多了 Users 目录

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

在网站后面加上Users

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

步骤4 添加数据

点击 Create new

结果

7 填写数据不能为空

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

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

打开 Users.cs

添加引用

using System.ComponentModel.DataAnnotations;

修改Users类的代码如下

public class Users    {        public int ID { get; set; }       //主键        [Required]        public string Name { get; set; }  /n/用户名称        [Required(ErrorMessage ="不能为空")]        public int Age { get; set; }    //用户年龄        [Required]        [Regular_Expression(@"^1[3458][0-9]{9}$", ErrorMessage = "手机号格式不正确")]        public int Number { get; set; } //用户手机号码    }

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

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

这个就是模型验证。

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

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

注:

关于ASP.NET Core怎么使用EF SQLite对数据库增删改查就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

数据 数据库 模型 上下 上下文 代码 文件 生成 内容 名称 数据表 步骤 用户 字符 字符串 版本 应用 管理 选择 函数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 青少年网络安全讲座视频 怎么删除服务器里的数据 推广系统定制和软件开发 mogodb 删除数据库 musql数据库引擎有哪些 什么是数据库安全定义 阳泉移动软件开发 服务器能接受的最大数据 可以自建服务器的游戏 大学生心理健康数据库怎么下载 云服务器怎么查看网站代码 博思得软件开发包 浪潮塔式服务器供应商 江苏进口软件开发简介 mud游戏西游记服务器下载 网络安全培训主题 银行业务存款取款数据库关系图 互联网科技图片+psd 数据库系统要做哪些功能 轻化工程用哪个数据库查外文文献 在数据库技术中 数据库系统 信息服务器管理的内容 登陆邮箱需要服务器 网络安全对跨境电商的重要性 罗布乐思什么时候开服务器 公安局开展网络技术检测工作 应届毕业生软件开发怎么提升 从化高端网络安全服务 数据库设计的书籍 solr怎么连接数据库数据的
0