x01.SportWeb: An Example for AspNetCore 2.0

时间:2022-12-09 16:25:07

新的刚来到,旧的就忘掉。学习 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 中运行效果图如下:

x01.SportWeb: An Example for AspNetCore 2.0

需要安装 sqlite,npm, less 等,使用 sudo aptnpm install 即可。