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

目录

  • 1新建ASP.NETCoreMVC应用
    • 1.1新建MVC应用
    • 1.2引入NuGet包
      • 引入教程
      • 依赖项
  • 2新建模型和上下文
    • 2.1新建模型类
      • 2.2新建上下文
        • 步骤1
        • 步骤2
        • 步骤3
    • 3配置服务
      • 1直接写字符串
        • 2使用JSON
        • 4生成数据库
          • 5使用工具管理SQLite文件
            • 6生成增删查改基架
              • 步骤1
                • 步骤2
                  • 步骤3
                    • 步骤4添加数据
                    • 7填写数据不能为空
                      SQLIte 操作方便,简单小巧,这里笔者就不再过多介绍,感兴趣可以到以下博文
                      https://www.jb51.net/article/234142.htm
                      文章介绍创建ASP.NET Core 程序,创建模型、上下文,生成数据库,对数据库增删查改。
                      并对每个过程进行详细介绍,使初学者尽快了解内容和相关知识,避免对某一知识点怀疑、卡在某个位置。

                      1 新建ASP.NET Core MVC 应用
                      1.1 新建MVC应用
                      打开Visual Studio 2017,新建 ASP.NET Web应用程序,选择MVC(模型视图控制器)。
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片

                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片



                      1.2 引入NuGet 包
                      【ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查】需要 引入
                      • microsoft.EntityFrameworkCore
                      • Microsoft.EntityFrameworkCore.Sqlite

                      引入教程 点击

                      依赖项 -右键
                      --管理NuGet 程序包
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片

                      轮流输入并安装microsoft.EntityFrameworkCore 、Microsoft.EntityFrameworkCore.Sqlite,下面附过程
                      注:
                      版本请选择与自己 ASP.NET Core 版本接近的。
                      笔者版本 ASP.NET Core 版本为 2.1 ,选择的 NuGet 包版本为 2.11。
                      如果你的 .Net Core 是最新的,那么 NuGet 也选最新的即可。
                      如果你选择版本后,发现报错,可以再进入 NuGet 重新删除安装。
                      出现更新提示千万不用更新。
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片

                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片


                      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; }}}

                      上面代码,有三个类,
                      • 其中SqlContext 类是上下文类,
                      • A、B类为模型类,
                      • 但是,只让A生成数据库表,而B不会生成数据库表。
                      • A、B都是模型类,因为可以被生成数据库表,所以A也可以叫实体类,B因为没有 DbSet ,所以B叫模型类,不叫实体类。
                      • A类将会生成一个真实的数据库中的表,有对应关系,所以,他是“实体类”。
                      • B类没有对应的存在,只是模型,没有实际存在的对象,所以只是叫“模型类”。

                      2.1 新建模型类
                      上面代码把模型类、上下文类放到同一个文件 SqlContext.cs,这样可读性不太好。
                      因为一个模型类,代表一个数据表,上下文类相当于一个配置类,一个数据库有几十个表,每个表有几个列,这样会使文件内容过于复杂。
                      我们可以降低耦合,每个类文件只存在一个类,每个类代表一个表,你要创建几个表,就对应写几个类。
                      实际操作
                      在 Models 文件夹中
                      • 新建一个类Users.cs
                      • 在类中直接写代码
                      public int ID { get; set; }//主键public string Name { get; set; }//用户名称public int Age { get; set; }//用户年龄public int Number { get; set; } //用户手机号码

                      如图
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片

                      注:
                      一个模型类 对应 一个数据表(Table)
                      模型类的一个属性 对应一个列。
                      模型类只应出现属性,不应该出现方法等。
                      笔者这里只写一个表,如果你想要多个表,可以新建其它类,然后在上下文类中加入。

                      2.2 新建上下文
                      上面已经建立模型类,模型类将成为数据表(Table)本身。然而他们不能直接对应生成数据表,需要上下文来对模型类映射成数据表,不然他们只是普通的类。
                      在 Models 目录新建 类MyContext.cs
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片

                      在头部引入 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即为使用的模型类//UaaUsers 类在数据库生成的名称

                      注:
                      上面代码表示以模型类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; }}}

                      生成的效果图预览
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片


                      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 方法里加入
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片

                      直接复制下面代码覆盖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 包管理器
                      --程序包管理器控制台
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片

                      输入
                      Add-Migration InitialCreate

                      等待结束后在输入
                      Update-Database

                      如图
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片


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

                      5 使用工具管理SQLite文件 生成数据库文件后,会发现无法直接打开的,即使是 VS2017 也不行。
                      这时可以使用工具SQLite Expert Professional ,来对 SQLIte 数据库进行管理。
                      下载地址https://www.jb51.net/database/265.html
                      软件介绍https://www.jb51.net/database/265.html
                      安装好软件后,即可打开数据库文件。
                      软件打开数据库文件教程:
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片

                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片

                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片


                      6 生成增删查改基架 这时候可以在程序对数据库进行操作,对于如何使用,最好去看微软的Entity Framework文档。
                      笔者这里给出一个简单的示例。

                      步骤 1
                      在 Controller 目录,右键点击 添加 -- 新建基架的项目
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片


                      步骤 2
                      点击 视图使用 Entity Framework 的 MVC 控制器
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片


                      模型类 选择 Users([项目名称].Models)
                      数据库上下文选择MyContext ([项目名称].Models)
                      点击 添加
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片


                      步骤3
                      这时可以看到
                      Controller 多了 UsersController.cs 文件
                      Views 多了 Users 目录
                      请点击 运行 或按 F5,启动网站
                      在网站后面加上Users
                      例如 https://localhost:[实际端口]/Users,就可以对Users表为所欲为了
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片


                      步骤4 添加数据
                      点击 Create new
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片

                      结果
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片

                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片


                      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][RegularExpression(@"^1[3458][0-9]{9}$", ErrorMessage = "手机号格式不正确")]public int Number { get; set; } //用户手机号码}

                      运行网站,打开 URL/Users,点击 Create New,然后不用填写内容直接提交,会发现
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片

                      填写其它项,然后在 Number一项乱填数字,会发现
                      ASP.NET|ASP.NET Core使用EF SQLite对数据库增删改查
                      文章图片

                      这个就是模型验证。
                      它不需要写什么代码,只要在属性上面加上 [特性]即可。
                      这方面知识,请另外查阅。
                      注:
                      • [Required] 表示该项不能为空
                      • [Required(ErrorMessage ="不能为空")] ErrorMessage ="" 就是不按此要求填写,会出现额提示
                      • [RegularExpression(@"^1[3458][0-9]{9}$", ErrorMessage = "手机号格式不正确")] 这是正则表达式验证,填写的内容不符合格式的话,会出现错误提示。
                      以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

                        推荐阅读