1. 程式人生 > >.net Core 自我學習隨筆(三)——我們整個資料庫如何?

.net Core 自我學習隨筆(三)——我們整個資料庫如何?

第一篇文章就提到過,會給大家介紹資料庫方面的知識。那好吧我們這回要好好學習學習資料庫方面的知識了!

在學習資料庫知識之前,我們先要了解一下,主流的資料庫有哪一些:
1、MSSQL,也就是常說的 Microsoft SQL Server。對於 非 Windows 的系統來說,是不能安裝使用的——至少在沒出 Linux 版之前,但聽說微軟打算出品 For Linux,只不過功能要低一些。

2、MySQL / Maridb,這是各個公司最常用的資料庫。為什麼,免費唄,不花銀子唄。不花錢的誰不喜歡。而他最佳拍檔就是 PHP 啦。聽說 PHP 7.0 用得是 PDO 連結資料庫的方法,這就對資料庫操作提供了更好的方式。

3、Sqlite,你可以把他當成像 Access 那樣就是一個檔案的資料庫,也可以理解為在 Access 基礎上,一個全面的獨立 SQL 資料庫檔案

4、Oracle,甲骨文的最好的技術產物——自從 JAVA 被收了後,感覺 Java 就被 Oracle 好好綁架當壓寨夫人了,而小弟弟 MySQL 成了小催。。。呃。。。過了過了。Oracle 強大的資料庫管控能力是在 SQL 之上,所以被稱為大神級的資料庫。

還有其它的,他是,可以忽略了。畢竟,用得也少。

下面,我以 Microsoft 常用的 MSSQL 來作為例子給大家介紹一下其如何玩耍。呃。。。我主要用得是 MSSQL 2012,其實其它的也都差不多拉。

好,我們還是像以前,建立個環境。我就用 VS2015 來整了。為什麼這樣,因為我擔心我一高興寫錯了,這樣很頭痛的(^^)!為此,我不會用一些只有 Visual Studio 才能用到的方法,而是採用全平臺都能玩的方式演示。

工程名我也想好了,就叫“testProject”,多 COOL 的名字,一看就知道這是幹嘛的!

按第一篇文章的方式,我們選把 testProject 那好。那好的樣子是:
這裡寫圖片描述

好,我們要想讓 .net Core 與“資料庫”交流,就要呼叫相應的交流包。這些包怎麼呼叫呢?當然是通過設定其 project.json 工程檔案來實現。

第一篇說過 project.json 可以用來呼叫 NuGet 來設定相應的庫。

首先,我們開啟 project.json,按如下方式來修改:
1、在“dependencies”新增“Microsoft.EntityFrameworkCore.SqlServer”,版本是“1.1.0”;之後再新增“Microsoft.EntityFrameworkCore.Design”,版本是“1.1.0”,型別為“build”。

"Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
"Microsoft.EntityFrameworkCore.Design": {
    "version": "1.1.0",
    "type": "build"
}

如此修改後,我們就看到了在“引用”中多出了兩個傢伙:
這裡寫圖片描述

如果其它的資料庫,比如 MySQL、Sqlite,其實,你就把“Microsoft.EntityFrameworkCore.SqlServer”裡改成相應的Nuget,比如:“Microsoft.EntityFrameworkCore.Sqlite”、“MySQL.Data.Entities”。

2、我們要用於 First Code 實現的類。怎麼做呢?方式是建立一個類來實現。我們先新建立一個資料夾叫“Model”,這樣才有 MVC 的樣子(><)!之後在裡面建立一個類(class),名字叫“myDataBase”——我的資料庫!

看準下圖,別建錯了!畢竟,.net Core 只識 .net Core,對 .net Framework 基本無視。
這裡寫圖片描述

結果應該如下:
這裡寫圖片描述

3、改 myDataBase.cs 中的程式碼
我們先看一下,myDataBase.cs 中的原始樣子是什麼樣子,這樣大家統一一下,不然姿勢錯了,直接再順下去,八成要出奇葩了。
這裡寫圖片描述

好的,我們下面對其修改了。

首先,我們在 一大堆 using 中加入“using Microsoft.EntityFrameworkCore;”這樣,就有了正確的名稱空間來對下面的程式碼進行支援了。

之後,在 public class myDataBase 後面加上“ : DbContext”。

再然後在方法裡建立兩個方法——其實說白了相當於資料庫中的“表”。

public DbSet<MyUser> Users { get; set; }
public DbSet<MyNews> News { get; set; }

其中,Users 與 News 必須與資料庫表明一致,而MyUser 與 MyNews 就是類構成——其結構,自己看心情起。^^

有了兩個表後,我們要想一想了。不對呀,我們不連資料庫,有兩個表有毛用呀,所以我們要連線一下資料庫(說實話,我感覺我有點本末倒置)。程式碼是:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseSqlServer(@"Server=SQLOLEDB;Data Source=(local);uid=sa;pwd=za;DataBase=myDataBase");
}

其中我們看到在 optionsBuilder 物件中有一個 UseSqlServer方法,說明這是連線 SQL Server 的,如果在 project.json 中選擇其它資料庫相應的類庫,那麼這裡的 UseSqlServer 也會變成其它的資料庫連線方法,比如 Sqlite 就是 UseSqlite。

後面的 @”Server=SQLOLEDB;Data Source=(local);uid=sa;pwd=za;DataBase=myDataBase” 是針對資料庫的連線字串,根據自己的需要進行修改

下面,我們看看 myDataBase.cs 檔案裡面就是下面這個樣子:
這裡寫圖片描述

我們發現在這個檔案中,IDE 提出了兩個錯誤點,可能大家用別的編輯器時不會發現——“MyUser”與“MyNews”。

上面說了,這兩貨是資料庫中表結構的類,所以我們最好先在資料庫中建立相應的表。別忘記資料庫名是:myData——見連線字串。

我用得是 SQL Server 2012 具體情況如下:
這裡寫圖片描述

Users表(主鍵:id,自增):
這裡寫圖片描述

News表(主鍵:news_id,自增):
這裡寫圖片描述

好了,有表了之後,我們就要實現這兩個表了。怎麼實現呢,當然要對這兩個傢伙建立相應的類啦。

依習慣,我個人的習慣呀,你們隨意了。就是在Model 中建個 dbo 來存放相應表對應的類。之後,我們在 dbo 資料夾裡建立相應的兩個類檔案:MyUser.cs、MyNews.cs

這裡寫圖片描述

好,我們來具體實現,先整 MyUser.cs,程式碼如下:

using System;
using System.ComponentModel.DataAnnotations;

namespace testProject.Model.dbo
{
    public class MyUser
    {
        [Key]
        public int id { get; set; }
        public string name { get; set; }
        public DateTime? createtime { get; set; }
    }
}

我們從中可以看出,方法 id、name、createtime 是對應著資料庫表 Users 裡面的每個欄位,連型別也是一一對應。

[Key] 標籤標註著 id 是關鍵字。而如果要在類中呼叫 [Key] 就必須要引入命令空間:System.ComponentModel.DataAnnotations。

這樣第一個表的類就實現了,第二個 MyNews.cs 如同上,我們照“類畫類”。

using System;
using System.ComponentModel.DataAnnotations;

namespace testProject.Model.dbo
{
    public class MyNews
    {
        [Key]
        public int news_id { get; set; }
        public string news_name { get; set; }
        public string news_content { get; set; }
        public DateTime? news_createtime { get; set; }
    }
}

兩個類實現完了後,我們就要向資料庫類 myDataBase.cs 中引入這兩個傢伙。因為都在 dbo 資料夾中,所以我們只要在 myDataBase.cs 加入名稱空間:testProject.Model.dbo 即可。

這裡寫圖片描述

這樣,資料庫連線就成了。其實的只要呼叫這個 Model 就成了,和平常的 MVC 一樣。

什麼???有人不會操作。。。天那。。。好吧,我先簡單介紹一下吧!T_T

我們先在 Controller 資料夾中的 HomeController.cs 建立一個方法,就叫 writeUser。

public string writeUser()
        {
            Model.myDataBase db = new Model.myDataBase();

            Model.dbo.MyUser user = new Model.dbo.MyUser
            {
                name = "MysteriousMan",
                createtime = DateTime.Now
            };

            db.Users.Add(user);
            db.SaveChanges();

            return "ok";
        }

執行結果 Web 頁:
這裡寫圖片描述

執行結果 資料庫:
這裡寫圖片描述

這樣,.net Core 資料庫的基本操作就這樣子鳥~~~