新的刚来到,旧的就忘掉。学习 AspNet Core 2.0,没有好的例子,是很痛苦的。《Pro ASP.NET Core MVC 2》中的 SportsStore 值得一看,不妨下载研究一下:
准备
1. 使用 Ubuntu 系统
2. 安装 NetCore2.0
3. 安装 VSCode
4. 安装 Sqlite
开始工作
1. 新建文件夹 MvcLab,用 VSCode 打开,ALT + `,打开终端,输入命令 dotnet new sln 生成解决方案;然后输入如下命令,生成 x01.SportWeb 及其测试项目:
mkdir x01.SportWeb cd x01.SportWeb/ dotnet new mvc --auth Individual cd .. mkdir x01.SportTest cd x01.SprotTest/ dotnet new xunit cd .. dotnet sln add x01.SportWeb/x01.SportWeb.csproj dotnet sln add x01.SportTest/x01.SportTest.csproj
2. 对照 SportsStore 的例子,亦步亦趋即可。
补充说明
1. 采用 Ubuntu,取其跨平台;--auth Individual 选项,是为用户管理作准备。
2. x01.SportTest.csproj 中,需添加对 x01.SportWeb.csproj 的引用:
<ItemGroup> <ProjectReference Include="../x01.SportWeb/x01.SportWeb.csproj" /> </ItemGroup>
3. 在 ApplicationDbContext 添加 public DbSet<Product> Products {get; set:} 属性后,需运行如下命令:
dotnet ef migrations add AddProduct
更新 database 前需添加类 TempDbContextFactory 如下:
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Design; namespace x01.SportWeb.Data { public class TempDbContextFactory : IDesignTimeDbContextFactory<ApplicationDbContext> { public ApplicationDbContext CreateDbContext(string[] args) { var builder = new DbContextOptionsBuilder<ApplicationDbContext>(); builder.UseSqlite("Data Source=app.db"); return new ApplicationDbContext(builder.Options); } } }
手工注释 Migrations/*_AddProduct.cs 中的 AddForeignKey 部分:
// migrationBuilder.AddForeignKey( // name: "FK_AspNetUserTokens_AspNetUsers_UserId", // table: "AspNetUserTokens", // column: "UserId", // principalTable: "AspNetUsers", // principalColumn: "Id", // onDelete: ReferentialAction.Cascade);
运行如下命令更新 database:
dotnet ef database update
其他《Pro ASP.NET Core MVC 2》书中语之甚详,不一一复叙也。
关于 Angular
1.《Angular 5 和 AspNet Core 2》 也是不错的,学习到第六章的代码下载链接:x01.TestMakerFreeWeb
2. 在 ubuntu => vscode 中运行效果图如下:
需要安装 sqlite,npm, less 等,使用 sudo apt 或 npm install 即可。