中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

發布時間:2022-01-10 16:07:18 來源:億速云 閱讀:207 作者:柒染 欄目:開發技術

這篇文章將為大家詳細講解有關ASP.NET Core怎么使用EF SQLite對數據庫增刪改查,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

1 新建ASP.NET Core MVC 應用

1.1 新建MVC應用

打開Visual Studio 2017,新建 ASP.NET Web應用程序,選擇MVC(模型視圖控制器)。

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

1.2 引入NuGet 包

需要 引入

  • microsoft.EntityFrameworkCore

  • Microsoft.EntityFrameworkCore.Sqlite

引入教程

點擊

依賴項

    -右鍵

      --管理NuGet 程序包

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?Core怎么使用EF?SQLite對數據庫增刪改查

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<SqlContext> Options):base(Options)
        {
        }
        public DbSet<A> 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> ,所以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?Core怎么使用EF?SQLite對數據庫增刪改查

注:

一個模型類 對應 一個數據表(Table)

模型類的一個屬性 對應一個列。

模型類只應出現屬性,不應該出現方法等。

筆者這里只寫一個表,如果你想要多個表,可以新建其它類,然后在上下文類中加入。

2.2 新建上下文

上面已經建立模型類,模型類將成為數據表(Table)本身。然而他們不能直接對應生成數據表,需要上下文來對模型類映射成數據表,不然他們只是普通的類。

在 Models 目錄新建 類MyContext.cs

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<MyContext> options) : base(options)
        {

        }

這個構造函數涉及到依賴注入,這里不再贅述,只需要知道這個構造函數能夠配置相關設置。

這里的構造函數內容為空,因為暫時沒有什么要配置的。

步驟3

在構造函數下面加上代碼,對模型類進行映射。

        public DbSet<Users> Uaa { get; set; }
//Dbset  映射成一個表
//Dbset<Users>   里面的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<MyContext> options) : base(options)
        {

        }
        public DbSet<Users> Uaa { get; set; }
    }
}

生成的效果圖預覽

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<MyContext>(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<MyContext>(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?Core怎么使用EF?SQLite對數據庫增刪改查

直接復制下面代碼覆蓋ConfigureServerices

public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(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<MyContext>(options => options.UseSqlite(connecttext));

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }

注:

SQLite 數據庫文件,可以不加后綴名,但加上后綴名會便于別人識別這是一個數據庫的文件,后綴名不限,可以為 .DB、.SQLite、SQLite3等。

4 生成數據庫

點擊

  工具

    -NuGet 包管理器

      --程序包管理器控制臺

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

輸入

Add-Migration InitialCreate

等待結束后在輸入

Update-Database

如圖

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

然后你會發現解決方案管理器,多了Migrations 目錄和一些文件,F:\ 目錄也多了一個MY.DB文件

5 使用工具管理SQLite文件

生成數據庫文件后,會發現無法直接打開的,即使是 VS2017 也不行。

這時可以使用工具SQLite Expert Professional ,來對 SQLIte 數據庫進行管理。

下載地址http://www.5655pk.com/database/265.html

軟件介紹http://www.5655pk.com/database/265.html

安裝好軟件后,即可打開數據庫文件。

軟件打開數據庫文件教程:

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

6 生成增刪查改基架

這時候可以在程序對數據庫進行操作,對于如何使用,最好去看微軟的Entity Framework文檔。

筆者這里給出一個簡單的示例。

步驟 1

在 Controller 目錄,右鍵點擊 添加 -- 新建基架的項目

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

步驟 2

點擊 視圖使用 Entity Framework 的 MVC 控制器

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

模型類 選擇 Users([項目名稱].Models)

數據庫上下文選擇MyContext ([項目名稱].Models)

點擊 添加

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

步驟3

這時可以看到

Controller 多了 UsersController.cs 文件

Views 多了 Users 目錄

請點擊 運行 或按 F5,啟動網站

在網站后面加上Users

例如 https://localhost:[實際端口]/Users,就可以對Users表為所欲為了

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

步驟4 添加數據

點擊 Create new

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

結果

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

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?Core怎么使用EF?SQLite對數據庫增刪改查

填寫其它項,然后在 Number一項亂填數字,會發現

ASP.NET?Core怎么使用EF?SQLite對數據庫增刪改查

這個就是模型驗證。

它不需要寫什么代碼,只要在屬性上面加上 [特性]即可。

這方面知識,請另外查閱。

注:

  • [Required] 表示該項不能為空

  • [Required(ErrorMessage ="不能為空")] ErrorMessage ="" 就是不按此要求填寫,會出現額提示

  • [RegularExpression(@"^1[3458][0-9]{9}$", ErrorMessage = "手機號格式不正確")] 這是正則表達式驗證,填寫的內容不符合格式的話,會出現錯誤提示。

關于ASP.NET Core怎么使用EF SQLite對數據庫增刪改查就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

依安县| 镇坪县| 句容市| 米脂县| 子长县| 汝南县| 伊金霍洛旗| 上虞市| 博湖县| 株洲县| 翁牛特旗| 丹巴县| 吴江市| 桂平市| 枣强县| 湖北省| 嘉峪关市| 东海县| 巧家县| 湄潭县| 红原县| 墨玉县| 乌拉特后旗| 呼和浩特市| 弥渡县| 射洪县| 双峰县| 洛阳市| 新竹市| 金沙县| 资源县| 聊城市| 翼城县| 宣威市| 庐江县| 望都县| 年辖:市辖区| 长宁区| 咸阳市| 饶平县| 大石桥市|