1、Entity Framework Core 3.1入门教程-概述和准备工作
本文章是根据 微软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")));

博客文章可以转载,但不可以声明为原创
1、Entity Framework Core 3.1入门教程-概述和准备工作的更多相关文章
- 3、Entity Framework Core 3.1入门教程-设定字段属性
本文章是根据 微软MVP solenovex(杨旭)老师的视频教程编写而来,再加上自己的一些理解. 视频教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR ...
- 10、Entity Framework Core 3.1入门教程-执行原生SQL
本文章是根据 微软MVP solenovex(杨旭)老师的视频教程编写而来,再加上自己的一些理解. 视频教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR ...
- 2、Entity Framework Core 3.1入门教程-创建数据库和迁移
本文章是根据 微软MVP solenovex(杨旭)老师的视频教程编写而来,再加上自己的一些理解. 视频教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR ...
- ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门
一.前言 1.本教程主要内容 ASP.NET Core MVC 集成 EF Core 介绍&操作步骤 ASP.NET Core MVC 使用 EF Core + Linq to Entity ...
- ASP.NET Core 入门笔记9,ASP.NET Core + Entity Framework Core 数据访问入门
一.前言 1.本教程主要内容 ASP.NET Core MVC 集成 EF Core 介绍&操作步骤 ASP.NET Core MVC 使用 EF Core + Linq to Entity ...
- Entity Framework Core 2.0 入门简介
不多说废话了, 直接切入正题. EF Core支持情况 EF Core的数据库Providers: 此外还即将支持CosmosDB和 Oracle. EFCore 2.0新的东西: 查询: EF.Fu ...
- Entity Framework Core 2.0 入门
该文章比较基础, 不多说废话了, 直接切入正题. 该文分以下几点: 创建Model和数据库 使用Model与数据库交互 查询和保存关联数据 EF Core支持情况 EF Core的数据库Provide ...
- ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 Entity Fram ...
- 【目录】ASP.NET Core 2.1 入门教程
ASP.NET Core 2.1 快速学习.入门系列教程,这个入门系列教程为了帮助大家快速上手ASP.NET Core. 本教程包含且不限于: 使用VS Code开发ASP.NET Core应用 AS ...
随机推荐
- PHP decbin() 函数
实例 把十进制转换为二进制: <?phpecho decbin("3") . "<br>";echo decbin("1" ...
- PHP highlight_string() 函数
实例 对字符串进行 PHP 语法高亮显示: <html><body><?phphighlight_string("Hello world! <?php p ...
- Blob分析之board _components.hdev
*用立体方法分割板子组件的示例程序*Application program to illustrate the segmentation* of board _components.hdev wit ...
- P5468 [NOI2019]回家路线 斜率优化 dp
LINK:回家路线 (文化课 oi 双爆炸 对 没学上的就是我.(我错了不该这么丧的. 不过还能苟住一段时间.当然是去打NOI了 这道题去年同步赛的时候做过.不过这里再次提醒自己要认真仔细的看题目 不 ...
- luogu P4525 自适应辛普森法1
LINK:自适应辛普森法1 观察题目 这个东西 凭借我们的数学知识应该是化简不了的. 可以直接认为是一个函数 求定积分直接使用辛普森就行辣. 一种写法: double a,b,c,d; double ...
- CF R631 div2 1330 E Drazil Likes Heap
LINK:Drazil Likes Heap 那天打CF的时候 开场A读不懂题 B码了30min才过(当时我怀疑B我写的过于繁琐了. C比B简单多了 随便yy了一个构造发现是对的.D也超级简单 dp了 ...
- SparkSQL JDBC和JDBCServer区别
注意SparkSQL JDBC和SparkSQL JDBCSever是完全两种不同的场景. SparkSQL JDBC SparkSQL可以使用JDBC的方式访问其他数据库,和普通非spark程序访问 ...
- WPF桌面程序在请求接口时如何防止被常用的抓包软件Fiddler抓包
问题:在我开发了一个WPF桌面应用程序的时候,由于涉及到登录等等操作通过Fiddler可以很直观的看到账号密码.首先问题有两点:1.数据提交的时候对于密码等重要的数据没有进行加密操作.2.没有防止抓包 ...
- Docker 搭建 RabbitMQ
Docker RabbitMQ RabbitMQ 安装非常繁琐,使用 Docker 快速搭建一个 RabbitMQ 开发环境 步骤 拉取镜像 docker pull rabbitmq 启动容器 端口会 ...
- C#LeetCode刷题之#59-螺旋矩阵 II(Spiral Matrix II)
目录 问题 示例 分析 问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3678 访问. 给定一个正整数 n,生成一 ...