前言
活到老,学到老。
需要用到asp.net core写个小工具,n+n年前曾经用过asp写过一个小网站,但,asp.net core跟asp只是名字相似罢了。
前段时间学习了一下,在此写些文字分享一下,权当是笔记吧,希望能做到温故而知新。感觉知识点还是蛮多的,好在之前有学习过C#和WPF,对学习asp.net core还是非常有帮助的。最终目的是做一个前后端分离的小工具站点并用Docker部署,不知晓最后能不能完成目标,也无法估计需要多长时间,且学且做了。
网上一搜,相关的信息太多了,但说到要找到最适合自己的教程资料却也殊为不易,因为乱花迷人眼啊,这就需要看运气和个人的学习习惯了。分享下鄙人主要的学习资料来源:
-
https://dotnettutorials.net/lesson/introduction-to-asp-net-core/ 网站
个人觉得此网站上的asp.net core教程写得比较通俗易懂,非常适合快速入门。注意有些页面(章节)会有重复的内容。 -
《Pro ASP.NET Core 3 – Eighth Edition》
叙述详细,文字比较多,需要耐心和时间才能看下去。目前只看了前面三部分,第四部分(高级功能)有需要时再参考。基本上按书的例程做了一遍(除了单元测试的部分),感觉上:有些懂了、有些似懂非懂、有些还没有懂。
开发环境
这是一个后端WebAPI的建立过程笔记,环境如下:
VisualStudio 2019
{
.NET Core 3.1
Microsoft.EntityFrameworkCore(5.0.13)
Microsoft.EntityFrameworkCore.Tools(5.0.13)
Pomelo.EntityFrameworkCore.MySql(5.0.4)
}
MySQL管理器:HeidiSQL,Ver:11.3
MySQL:不折腾,直接采用小皮面板(PHPStudy),Ver:5.7.26;
建立WebAPI项目
项目创建
从零开始,创建一个名为:MyFirstWebAPI的Project,比较简单,参考下列截图:
确保Target Framework为 .NET Core 3.1,Authentication Type为None,不启用HTTPS和Docker。
安装依赖包
通过NuGet Package Manager安装以下依赖包(注意版本!):
Microsoft.EntityFrameworkCore(5.0.13)
Microsoft.EntityFrameworkCore.Tools(5.0.13)
Pomelo.EntityFrameworkCore.MySql(5.0.4)
同样比较简单,参考下列截图:
代码构建步骤
基本上,建立一个EntityFramework+Pomelo+MySQL的WebAPI,大概有11个步骤(位置)需要添加/修改相应代码,详细参考下图(图中的第一步已在上面【安装依赖包】小节完成):
1. 添加依赖包(参考:【安装依赖包】小节)
2. 建立POCO实体类(Soldier.cs)
using System.ComponentModel.DataAnnotations;
namespace MyFirstWebAPI.Models
{
/// <summary>
/// 定义Soldier实体类
/// </summary>
public class Soldier
{
/// <summary>
/// 标识主键
/// </summary>
[Key]
public int Id {
get; set; }
public string FirstName {
get; set; }
public string LastName {
get; set; }
public string Number {
get; set; }
}
}
3. 建立DataContext类(DataContext.cs)
using Microsoft.EntityFrameworkCore;
namespace MyFirstWebAPI.Models
{
public class DataContext : DbContext
{
public DataContext(DbContextOptions<DataContext> opts)
: base(opts) {
}
/// <summary>
/// 取得Gang7Lian数据表
/// </summary>
public DbSet<Soldier> Gang7Lian {
get; set; }
}
}
4. 建立Repository接口(ISoldierRepository.cs 注意:是接口!)
using System.Collections.Generic;
using System.Threading.Tasks;
namespace MyFirstWebAPI