(二)3、相關數據模型(models)的創建
然後咱們再來解決Join的錯誤(你不會給忘了吧??!!)
在demo項目下新建一個名為Models的文件夾,用來放置數據模型,然後在Models目錄下新建一個名為Join類(Join可自定義),可以把這個當做MySQL裏的數據庫example
然後充實一下Join.cs的內容,如果有錯誤提示,是因為沒有添加“Microsoft.EntityFrameworkCore”,至於如何添加,上面我也說過了
using Microsoft.EntityFrameworkCore; namespace demo.Models { public class Join:DbContext { public Join(DbContextOptions<Join> options) : base(options) { } } }
這時我們再返回到Startup.cs,為什麽Join那裏還是報錯呢?因為它找不到Join這個類,所以我們現在就要添加Join這個類了,方法同上,選擇“using demo.Models",然後就沒有紅色錯誤提示了
6)現在在Join.cs裏面只添加了一個構造方法,就相當於只有一個空的數據庫,裏面是沒有表的,所以接下來我們就來添加表……的映射,把當前的數據模型與數據庫的表進行一一對應。右鍵DB文件夾,添加,類,輸入Person,確認。
再新建一個DB文件夾的原因是為了區分數據庫對應的表和在實際中遇到的表,現在可以不懂,沒關系,但這樣做是有好處的。
但是有人又會問,為什麽這裏是Person,而不是數據庫裏的People,嗯…數據模型,簡單來說,就是存放數據庫的表的屬性的。
有人又會問,後面的{ get; set; }是什麽,我也不是很懂,我的理解是該屬性具有讀(get)和寫(set)的權限。
有人又會問,那我有多個表呢,我只能說,4843,當然是在DB裏面創建相應的類就好了啊
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace demo.Models.DB { public class Person { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public string Gender { get; set; } } }
7)然後回到Join.cs存放數據模型(數據庫有多少表就在這裏添加多少個數據模型)
using demo.Models.DB;(沒錯啦,就是我胡漢三了) using Microsoft.EntityFrameworkCore;namespace demo.Models { public class Join:DbContext { public Join(DbContextOptions<Join> options) : base(options) { } public DbSet<Person> People { get; set; } (如果Person提示有錯,可能是沒有添加第一行) } }
3、到這裏,數據庫的連接差不多就完了,下面就是來操作數據庫的數據,把數據拿出來了。
在Controllers文件裏已經有個默認的ValuesController了,一般我的話會新建一個controller,ValuesController我一般只作為測試用,看看是否能連接到服務器。
右鍵Controller文件夾->添加->控制器
有人又會問,這個controller是幹嘛的,我…是不是沒看MVC就跑過來了,牛逼啊,那我就稍微說下,簡單來說,controller這部分就是一個數據中轉站,前端發送數據請求到controller,controller處理數據請求,從數據庫拿到相應的數據送到前端去。你說重不重要??!!
我一般選擇倒數第二個,可以自動生成相應的代碼
在填寫控制器名稱的時候按照規定來,以Controller結尾
添加後的界面
然而我們並不需要這麽多,刪掉多余的,就剩下這些了。
using System.Collections.Generic;using Microsoft.AspNetCore.Mvc; namespace demo.Controllers { [Produces("application/json")] [Route("api/Test")] public class TestController : Controller { // GET: api/Test [HttpGet] public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } } }
然後再把“數據庫”Join拿過來,再把People拿出來。(為方便,我把上面Using那裏多余的刪去了,就好看多了,至於為什麽Join那裏還報錯,我就不用說了吧)
using demo.Models;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
namespace demo.Controllers
{
[Produces("application/json")]
[Route("api/Test")]
public class TestController : Controller
{
private readonly Join _Join;
public TestController(Join join)
{
_Join = join;
}
// GET: api/Test
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
}
然後我們再get方法裏改造一下(有from xx in xx select xx的地方,如果ps報錯,這裏我是用了C#集成的查詢語言Linq,如果報錯,在最上面加上using system.linq就好)
[HttpGet] public JsonResult Get() { var ps = _Join.People; var q = from p in ps(即這裏報錯) select p; return Json(q.First()); }
然後再來測試一下我們再數據庫輸入的數據
調試->開始執行(不調試),不對啊,這不是我在數據庫插入的數據啊,別急,把values改為test就可以了,這就是controller的強大作用了
將values改為test後的樣子,是不是很神奇,這樣就把數據庫的數據取出來了
至此,webapi的基本操作到這裏就結束了。
本來我是想直接進入下一章前端Vue的,但是因為在這裏我遇到了太多的坑,不想讓大家再深陷於此,所以再來開一篇來說一下,話不多說,下一章傳送門
可能出現的問題
(二)3、相關數據模型(models)的創建