本文章是根據 微軟MVP solenovex(楊旭)老師的視頻教程編寫而來,再加上本身的一些理解。
視頻教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR
GitHub源碼:https://github.com/hllive/LearnEFCore3.1git
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(運動員) 三個都是一對多的關係github
在Models項目中添加三個Model :League(聯賽),Club(足球隊、俱樂部),Player(運動員)。
建好三個模型後,在Data類庫引用Models類庫web
// 聯賽 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; }//運動員列表 }
在Data類庫中經過NuGit安裝兩個包數據庫
將Model映射到數據庫裏,首先要創建一個AppDbContext類,在Data類庫中;這個類須要繼承DbContext。
AppDBcontext中包括包含了全部邏輯,好比與數據庫交互、數據變化追蹤等
爲讓三個Model能在Context中正常工做,將三個Model暴露成DbSet類型json
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文件中添加以下配置:app
"ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=EFCoreDb;Trusted_Connection=True;MultipleActiveResultSets=true" }
在Startup類的ConfigureServices方法下注入數據庫上下文依賴ide
services.AddDbContext<AppDbContext>(optionsAction => optionsAction.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
博客文章能夠轉載,但不能夠聲明爲原創ui