1、Entity Framework Core 3.1入門教程-概述和準備工作

hllive發表於2020-08-25

本文章是根據 微軟MVP solenovex(楊旭)老師的視訊教程編寫而來,再加上自己的一些理解。
視訊教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR
GitHub原始碼:https://github.com/hllive/LearnEFCore3.1

Entity Framework Core就是一個ORM,什麼是ORM?Entity Framework Core能把C#裡的類對映到資料庫裡的表,然後屬性就對映到欄位上。
Entity Framework Core 3.1 是微軟長期支援版本,3.1是一個長期支援的版本,而且從EFcore3.0開始是向後開闢了一個新時代。因為3.0和2.0之間的差異還是比較大,所以學3.1是一個比較好的選擇。在2020年底NET5出來之後,也應該出來一個相應的版本,但是跟這個3.1差別應該不會太大。
首先建三個Model或在資料庫中建三張表。
假如是一個足球聯賽,其包括:League(聯賽),Club(足球隊、俱樂部),Player(運動員) 三個都是一對多的關係

1、建立專案

  • 1、開啟Visual Studio 2019-->建立新專案-->選擇【空白解決方案】-->輸入解決方案名稱-->建立完成
  • 2、建立類庫:選擇解決方案右擊-->新增-->新建專案-->選擇【類庫(.NET Standard)】[圖1]也可以選擇【類庫(.NET Core)】-->最後給類庫起名為Models
  • 3、再建立一個類庫,起名為Data
  • 4、再建立一個【ASP.NET Core Web應用程式】[圖2],起名為WebApi,建立web應用程式選擇API[圖3]



    5、最後的專案結構

2、新增Model

在Models專案中新增三個Model :League(聯賽),Club(足球隊、俱樂部),Player(運動員)。
建好三個模型後,在Data類庫引用Models類庫

// 聯賽
public class League
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string Country { get; set; }//國家
}
//運動員
public class Player
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public DateTime Birth { get; set; }
}
//足球隊
public class Club
{
    public Club()
    {
        Players = new List<Player>();//為了以後使用不會遇到空引用
    }
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string City { get; set; }
    public DateTime DateOfEstablishment { get; set; }//成立日期
    public string History { get; set; }//歷史成績
    public League League { get; set; }//聯賽
    public List<Player> Players { get; set; }//運動員列表
}

3、安裝Entity Framework Core相關包

在Data類庫中通過NuGit安裝兩個包

  • 1、Microsoft.EntityFrameworkCore.SqlServer
  • 2、Microsoft.EntityFrameworkCore.Tools

Microsoft.EntityFrameworkCore.Tools包中會包含Microsoft.EntityFrameworkCore.Design包

  • 在Data類庫中引用Models類庫
  • 在WebApi應用程式中引用Data類庫(不用引用Models類庫也同樣能使用Models下的類,因為Data類庫已經引用了Models類庫,它們有級聯依賴關係)

4、對映資料庫

將Model對映到資料庫裡,首先要建立一個AppDbContext類,在Data類庫中;這個類需要繼承DbContext。
AppDBcontext中包括包含了所有邏輯,比如與資料庫互動、資料變化追蹤等
為讓三個Model能在Context中正常工作,將三個Model暴露成DbSet型別

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options)
        : base(options) { }
    public DbSet<League> Leagues { get; set; }
    public DbSet<Club> Clubs { get; set; }
    public DbSet<Player> Players { get; set; }
}

三個Model寫好後,還需要將類對映到資料中,也就是對映資料庫的三個表,與資料庫連線就需要資料庫連線字串
在WebApi應用程式中的appsettings.json檔案中新增如下配置:

"ConnectionStrings": {
  "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=EFCoreDb;Trusted_Connection=True;MultipleActiveResultSets=true"
}

在Startup類的ConfigureServices方法下注入資料庫上下文依賴

services.AddDbContext<AppDbContext>(optionsAction => 
      optionsAction.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

部落格文章可以轉載,但不可以宣告為原創

相關文章