SQLIte 操做方便,簡單小巧,這裏筆者就再也不過多介紹,感興趣能夠到如下博文html
http://www.javashuo.com/article/p-kdnsunjs-k.html正則表達式
文章介紹建立ASP.NET Core 程序,建立模型、上下文,生成數據庫,對數據庫增刪查改。sql
並對每一個過程進行詳細介紹,使初學者儘快瞭解內容和相關知識,避免對某一知識點懷疑、卡在某個位置。數據庫
打開Visual Studio 2017,新建 ASP.NET Web應用程序,選擇 MVC(模型視圖控制器)。json
須要 引入 cookie
引入教程app
點擊函數
依賴項工具
-右鍵網站
--管理NuGet 程序包
輪流輸入並安裝 microsoft.EntityFrameworkCore 、 Microsoft.EntityFrameworkCore.Sqlite,下面附過程
注:
版本請選擇與本身 ASP.NET Core 版本接近的。
筆者版本 ASP.NET Core 版本爲 2.1 ,選擇的 NuGet 包版本爲 2.11。
若是你的 .Net Core 是最新的,那麼 NuGet 也選最新的便可。
若是你選擇版本後,發現報錯,能夠再進入 NuGet 從新刪除安裝。
出現更新提示千萬不用更新。
這一步創建模型和上下文,後面將會根據這裏的代碼生成數據庫和數據庫表!
須要創建一個上下文類和模型類,把模型類包含在上下文類中,上下文類中包含進來的模型類,將會生成對應的數據庫表。
下面這代碼不用本身操做,只須要看就行。(注意紅色加粗部分)
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.cs,這樣可讀性不太好。
由於一個模型類,表明一個數據表,上下文類至關於一個配置類,一個數據庫有幾十個表,每一個表有幾個列,這樣會使文件內容過於複雜。
咱們能夠下降耦合,每一個類文件只存在一個類,每一個類表明一個表,你要建立幾個表,就對應寫幾個類。
實際操做
在 Models 文件夾中
public int ID { get; set; } //主鍵 public string Name { get; set; } //用戶名稱 public int Age { get; set; } //用戶年齡 public int Number { get; set; } //用戶手機號碼
如圖
注:
一個模型類 對應 一個數據表(Table)
模型類的一個屬性 對應一個列。
模型類只應出現屬性,不該該出現方法等。
筆者這裏只寫一個表,若是你想要多個表,能夠新建其它類,而後在上下文類中加入。
上面已經創建模型類,模型類將成爲數據表(Table)自己。然而他們不能直接對應生成數據表,須要上下文來對模型類映射成數據表,否則他們只是普通的類。
在 Models 目錄新建 類 MyContext.cs
在頭部引入 EF( EntityFrameworkCore )
using Microsoft.EntityFrameworkCore;
步驟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; } } }
生成的效果圖預覽
爲了讓應用生成數據庫、使用到這個數據庫,須要在 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等。
點擊
工具
-NuGet 包管理器
--程序包管理器控制檯
輸入
Add-Migration InitialCreate
等待結束後在輸入
Update-Database
如圖
而後你會發現解決方案管理器,多了 Migrations 目錄和一些文件,F:\ 目錄也多了一個MY.DB文件
生成數據庫文件後,會發現沒法直接打開的,即便是 VS2017 也不行。
這時可使用工具 SQLite Expert Professional ,來對 SQLIte 數據庫進行管理。
下載地址 http://xzc.197746.com/SQLiteExpert5.zip
軟件介紹 https://www.cr173.com/soft/36343.html
安裝好軟件後,便可打開數據庫文件。
軟件打開數據庫文件教程:
這時候能夠在程序對數據庫進行操做,對於如何使用,最好去看微軟的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
結果
注:這裏涉及到特性、數據驗證,筆者再也不贅述,讀者能夠先了解,而後翻譯別的文章。
通過上面操做,咱們已經能夠對數據庫進行操做,實際上,雖然能夠操做數據,但是若是我想設置某個項必須填寫呢,某個項的格式必須是手機呢?總不能讓用戶隨便填吧?
打開 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一項亂填數字,會發現
這個就是模型驗證。
它不須要寫什麼代碼,只要在屬性上面加上 [特性]便可。
這方面知識,請另外查閱。
注:
【完】