ASP.NET Core 使用 SQLite 教程,EF SQLite教程,修改模型更新數據庫,適合初學者看懂詳細、簡單教程

SQLIte 操做方便,簡單小巧,這裏筆者就再也不過多介紹,感興趣能夠到如下博文html

http://www.javashuo.com/article/p-kdnsunjs-k.html正則表達式

 文章介紹建立ASP.NET Core 程序,建立模型、上下文,生成數據庫,對數據庫增刪查改。sql

並對每一個過程進行詳細介紹,使初學者儘快瞭解內容和相關知識,避免對某一知識點懷疑、卡在某個位置。數據庫


 過程&目錄

1 新建ASP.NET Core MVC 應用

  1.1 新建MVC應用

   1.2 引入NuGet 包

 2 新建模型和上下文

  2.1 新建模型類

  2.2 新建上下文

3 配置服務

4 生成數據庫

5 使用工具管理SQLite文件

6 生成增刪查改基架

7 數據驗證


 

1 新建ASP.NET Core MVC 應用

  1.1 新建MVC應用

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

 

 1.2 引入NuGet 包

   須要 引入 cookie

  • microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.Sqlite

 引入教程app

點擊函數

依賴項工具

    -右鍵網站

       --管理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<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; } //用戶手機號碼

如圖

注:

一個模型類  對應 一個數據表(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<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; }
    }
}

 

生成的效果圖預覽

 


 

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<MyContext>(options=>options.UseSqlite(「鏈接字符串」));
表示
    嚮應用注入DbContext (數據庫上下文服務),注入的上下文類型爲
MyContext>

(options=>options.UseSqlite(「鏈接字符串」)
是 lambda 表達式,表示使用 sqlite 數據庫,參數是鏈接字符串。Lambda 表達式屬於C# 基礎知識,不會的話,先記着,之後查找資料。

來實際操做

請使用複製上面 方式一 的代碼,而後在 Startup.cs 類 -- ConfigureServices 方法里加入

 

直接複製下面代碼覆蓋 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 包管理器

      --程序包管理器控制檯

 

輸入

Add-Migration InitialCreate

等待結束後在輸入

Update-Database

如圖

 

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


5 使用工具管理SQLite文件

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

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

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

軟件介紹 https://www.cr173.com/soft/36343.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]
        [RegularExpression(@"^1[3458][0-9]{9}$", ErrorMessage = "手機號格式不正確")]
        public int Number { get; set; } //用戶手機號碼
    }

 

運行網站,打開 URL/Users,點擊 Create New,而後不用填寫內容直接提交,會發現

 

填寫其它項,而後在 Number一項亂填數字,會發現

這個就是模型驗證。

它不須要寫什麼代碼,只要在屬性上面加上 [特性]便可。

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

注:

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

   

 

【完】

相關文章
相關標籤/搜索