x01.SportWeb: An Example for AspNetCore 2.0
新的刚来到,旧的就忘掉。学习 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 即可。
最新文章
- Servlet作业1-实现注册登录
- 【CodeForces 699D】Fix a Tree
- [Unity3D] 浅尝Unity3D
- [JS] 限制上传文件的类型和大小
- redis持久化(摘录)
- 调整系统的inode数量
- jq模糊匹配
- 2016 ACM/ICPC Asia Regional Dalian ICPC大连现场赛
- java IO(一):File类
- 2018-01-17 Antlr4实现简单语言之整数比较表达式
- Linux 中的 tar
- ui选型
- day 25 udp, socketserver
- 【BZOJ5133】[CodePlus2017年12月]白金元首与独舞 矩阵树定理
- 蓝桥杯 算法提高 学霸的迷宫 经典BFS问题
- (转)看懂UML类图
- ISCC2014-reverse
- linux在文件中包含某个关键词的指定行插入内容
- [C++] Realloc Memory
- minishift安装
热门文章
- 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
- HTTP协议图--HTTP 响应状态码(重点分析)
- #Alpha Scrum6
- (六)Linux下的压缩命令
- the longest distance of a binary tree
- 【[SHOI2007]园丁的烦恼】
- 【node.js】事件循环、EventEmitter
- 5 个强大的 HTML5 API
- jq页面加载问题
- 學習Extjs比較好的資源