创建基于OData的Web API - Knowledge Builder API, Part II:Project Setup
本篇为Part II:Project Setup
查看第一篇《Part I: Business Scenario》
第一步,准备步骤。
准备步骤一,下载.NET Core 2.2 SDK;
官方网址是:https://dot.net (貌似会redirect去https://dotnet.microsoft.com/),选择Download .NET Core 2.2 SDK,并正确安装。
准备步骤二,下载SQL Server 2017 Express;
SQL Server的官方网址是:https://www.microsoft.com/en-us/sql-server/
数据库的选择因人而异,这里选择MS免费的SQL Server Express。虽然也有SQL Server 2019 Preview版本,但考虑Preview版本不是RC版本,稳定性上,不建议选择。
MySQL是另外一个选择。但是选择SQL Server Express 的优点是官方指代的Library就够用了。
注意,安装数据库时候,默认安装一个instance。
准备步骤三,下载Visual Studio Community OR Visual Studio Express
个人推荐Visual Studio Code。
虽然Visual Studio Community应该更合适,但是考虑到熟悉命令行显然更便于将来切换到non-Windows平台上。
另外,Visual Studio Community 2017的臭名昭著的卸载问题,也是放弃其的一个原因。
第二步,创建Project
ASP.NET Core 官方的Tutorial文档:https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.0&tabs=visual-studio-code
EF Core官方Tutorial:https://docs.microsoft.com/en-us/ef/core/get-started/?tabs=netcore-cli
OData官方Getting Started:https://docs.microsoft.com/en-us/odata/webapi/netcore
本文列出的创建步骤综合考虑了上述三大文档,得出整个项目设置流程如下命令(逐一执行)。
mkdir KnowledgeBuilderAPI
cd KnowledgeBuilderAPI
dotnet new sln
dotnet new webapi -o KnowledgeBuilderAPI
cd KnowledgeBuilderAPI
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.InMemory
dotnet add package Microsoft.AspNetCore.OData --version 7.3.0-beta
cd ..
dotnet sln add ./KnowledgeBuilderAPI/KnowledgeBuilderAPI.csproj
mkdir KnowledgeBuilderAPI.Test
cd KnowledgeBuilderAPI.Test
dotnet new xunit
dotnet add reference ../KnowledgeBuilderAPI/KnowledgeBuilderAPI.csproj
cd ..
dotnet sln add ./KnowledgeBuilderAPI.Test/KnowledgeBuilderAPI.Test.csproj
code -r ../KnowledgeBuilderAPI
注意, 上述步骤只适用.NET Core 3.0和OData 7.3.0 Beta。因为OData 之前的版本 (7.3.0以前的版本)不支持.NET Core 3.0 (Routing),在.NETCore 2.2版本下,两个csproj文件分别为:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.OData" Version="7.2.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.2.0" />
</ItemGroup>
</Project>
Test project如下:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework> <IsPackable>false</IsPackable>
</PropertyGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="2.2.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
</ItemGroup> <ItemGroup>
<ProjectReference Include="..\knowledgebuilderapi\knowledgebuilderapi.csproj" />
</ItemGroup> </Project>
第三步,针对开发环境,使用Secret Manager tool
执行命令:
dotnet user-secrets init
这条命令会在当前目录下的项目文件(*.csproj)中加入一条。
<PropertyGroup>
<UserSecretsId>xxxxxxxxxx</UserSecretsId>
</PropertyGroup>
同时,可以查看文件:
%APPDATA%\Microsoft\UserSecrets\<user_secrets_id>\secrets.json
通过命令往其中增加内容,对这个项目来说,是增加Connection String。
dotnet user-secrets set "KnwoledgeBuilderAPI:ConnectionString" "Server=.\SQLEXPRESS;Database=knowledgebuilder;Trusted_Connection=True;"
如果想要删除该Connection String,调用命令:
dotnet user-secrets remove
另外两个有用的命令是:list - 显示当前所有值
dotnet user-secrets list
clear - 清除所有☞
dotnet user-secrets clear
至此,一个粗略的项目框架已经ready,可以跑
dotnet run
来运行了,也可以使用
dotnet test
来测试。
下一篇将讲述如何开发Model。
创建基于OData的Web API - Knowledge Builder API, Part II:Project Setup的更多相关文章
- 创建基于OData的Web API - Knowledge Builder API, Part IV: Write Controller
基于上一篇<创建基于OData的Web API - Knowledge Builder API, Part III:Write Model and Controller>,新创建的ODat ...
- 创建基于OData的Web API - Knowledge Builder API, Part I:Business Scenario
在.NET Core 刚刚1.0 RC的时候,我就给OData团队创建过Issue让他们支持ASP.NET Core,然而没有任何有意义的答复. Roadmap for ASP.NET Core 1. ...
- 创建基于OData的Web API - Knowledge Builder API, Part III:Write Model
在前两篇文章<Part I: Business Scenario> 和<Part II: Project Setup>后,可以开始真正Model的创建. 步骤如下: 1. 创建 ...
- 使用 node-odata 轻松创建基于 OData 协议的 RESTful API
前言 OData, 相信身为.NET程序员应该不为陌生, 对于他的实现, 之前也有童鞋进行过介绍(见:这里1,这里2). 微软的WCF Data Service即采用的该协议来进行通信, ASP.NE ...
- 基于SVG的web页面图形绘制API介绍
转自:http://blog.csdn.net/jia20003/article/details/9185449 一:什么是SVG SVG是1999由W3C发布的2D图形描述语言,纯基于XML格式的标 ...
- Java Web学习系列——创建基于Maven的Web项目
创建Maven Web项目 在MyEclipse for Spring中新建Maven项目 选择项目类型,在Artifact Id中选择maven-archetype-webapp 输入Group I ...
- 可能是最简单的方式:利用Eclipse创建基于Maven的Web项目
1. 新建一个maven项目 2.在弹出框中选择创建一个简单项目 3. 然后输入参数,需要注意的是,在packagin中,选择war,web项目应该选择war 4. 点击finish后,基本项目结构就 ...
- idea创建基于maven的web项目
1.点击create new project,选择maven,点击next 2.输入项目信息,点击finish 3.进入项目后,点击菜单File->Project Structure开始配置项目 ...
- maven-bundle-plugin插件, 用maven构建基于osgi的web应用
maven-bundle-plugin 2.4.0以下版本导出META-INF中的内容到MANIFEST.MF中 今天终于把maven-bundle-plugin不能导出META-INF中的内容到Ex ...
随机推荐
- Jmeter插件图表分析
1.jp@gc - Actiive Threads Over Time:不同时间的活动用户数量展示(图表) 当前的时间间隔是1毫秒,在setting中可以设置时间间隔以及其他的参数,右击可以导出exc ...
- Codeforces1141F_Same Sum Blocks
题意 给定一个序列,求最多的不相交区间满足区间和相同. 分析 从暴力的角度想,是枚举区间再求和,反过来想,直接记录每个和对应是那些区间,然后排个序求最大不相交即可. 代码 #include <b ...
- [CF722C] Destroying Array
C. Destroying Array time limit per test 1 second memory limit per test 256 megabytes input standard ...
- table表格中文字超出显示省略号
第一步: table {table-layout:fixed:}列宽由表格宽度和列宽度设定,不随文字多少变化 第二步: td { white-space:nowrap;/*文本不会换行,文本会在在同一 ...
- 玩转u8g2 OLED库 MAX7219_32X8点阵模块
u8g2 OLED库 + MAX7219_32X8点阵模块 理论基础 玩转u8g2 OLED库,一篇就够 玩转u8g2 OLED库,一篇就够(字数太多 要分篇) 实验内容 Full screen bu ...
- 包管理工具-yum
yum介绍 yum(全称为 Yellow dog Updater, Modified)是一个在 Fedora和 RedHat 以及 CentOS 中的 Shell 前端软件包管理器.基于 RPM 包管 ...
- 替换dom操作
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- chrome安装json美化软件 JSONView
安装效果如下: 安装步骤: 1.下载地址: github地址:https://github.com/gildas-lormeau/JSONView-for-Chrome 2.解压文件 3.打开谷歌浏览 ...
- Redis5源码解析-Sentinel
简单的概念就不解释.基于Redis5.0.5 从Sentinel主函数触发 在sentinel.c文件的最后面可以发现sentinelTimer函数,这个就是Sentinel的主函数,sentinel ...
- Access教程 Access学习 Access培训 Access QQ交流集中地
Access教程 Access学习 Access培训 Access QQ交流集中地 http://www.office-cn.net/plugin.php?id=zstm_qqgroup:index ...