新的刚来到,旧的就忘掉。学习 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 aptnpm install 即可。

最新文章

  1. Servlet作业1-实现注册登录
  2. 【CodeForces 699D】Fix a Tree
  3. [Unity3D] 浅尝Unity3D
  4. [JS] 限制上传文件的类型和大小
  5. redis持久化(摘录)
  6. 调整系统的inode数量
  7. jq模糊匹配
  8. 2016 ACM/ICPC Asia Regional Dalian ICPC大连现场赛
  9. java IO(一):File类
  10. 2018-01-17 Antlr4实现简单语言之整数比较表达式
  11. Linux 中的 tar
  12. ui选型
  13. day 25 udp, socketserver
  14. 【BZOJ5133】[CodePlus2017年12月]白金元首与独舞 矩阵树定理
  15. 蓝桥杯 算法提高 学霸的迷宫 经典BFS问题
  16. (转)看懂UML类图
  17. ISCC2014-reverse
  18. linux在文件中包含某个关键词的指定行插入内容
  19. [C++] Realloc Memory
  20. minishift安装

热门文章

  1. java.lang.UnsatisfiedLinkError: /usr/openv/java/jre/lib/amd64/libawt_xawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
  2. HTTP协议图--HTTP 响应状态码(重点分析)
  3. #Alpha Scrum6
  4. (六)Linux下的压缩命令
  5. the longest distance of a binary tree
  6. 【[SHOI2007]园丁的烦恼】
  7. 【node.js】事件循环、EventEmitter
  8. 5 个强大的 HTML5 API
  9. jq页面加载问题
  10. 學習Extjs比較好的資源