创建基于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 ...
随机推荐
- Vue-CLI项目vuex仓库
0901自我总结 Vue-CLI项目vuex仓库 一.概念 vuex仓库是vue全局的数据仓库,好比一个单例,在任何组件中通过this.$store来共享这个仓库中的数据,完成跨组件间的信息交互. v ...
- 浅谈celery的坑
celery celery的使用以及在Django中的配置,不详细介绍,主要记录在Django中使用的坑点. 坑点 时区问题 celery默认的时区是世界标准时间,比东八区慢了8个小时,如果发布定时任 ...
- Ubuntu安装exfat工具
sudo apt-get undate sudo apt-get install exfat-utils
- 解决seajs ie8 对象不支持charAt 属性。
在使用 seajs做项目,今天偶然发现在ie9以下的ie版本会 报出 对象不支持charAt 属性.刚开始还以为是自己写的js部分出了问题,经过几个小时的奋战.最终找到了其根源.在sea-debug. ...
- [JZOJ5863] 【NOIP2018模拟9.11】移动光标
Description
- DNS原理及解析过程详解
相信大家在平时工作中都离不开DNS解析,DNS解析是互联网访问的第一步,无论是使用笔记本浏览器访问网络还是打开手机APP的时候,访问网络资源的第一步必然要经过DNS解析流程.下面我们将详细的给大家讲解 ...
- linux 中more、less 和 most 的区别
如果你是一个 Linux 方面的新手,你可能会在 more.less.most 这三个命令行工具之间产生疑惑.在本文当中,我会对这三个命令行工具进行对比,以及展示它们各自在 Linux 中的一些使用例 ...
- java ThreadLocal线程设置私有变量底层源码分析
前面也听说了ThreadLocal来实现高并发,以前都是用锁来实现,看了挺多资料的,发现其实还是区别挺大的(感觉严格来说ThreadLocal并不算高并发的解决方案),现在总结一下吧. 高并发中会出现 ...
- 用深度优先搜索(DFS)解决多数图论问题
前言 本文大概是作者对图论大部分内容的分析和总结吧,\(\text{OI}\)和语文能力有限,且部分说明和推导可能有错误和不足,希望能指出. 创作本文是为了提供彼此学习交流的机会,也算是作者在忙碌的中 ...
- 百万年薪python之路 -- 并发编程之 协程
协程 一. 协程的引入 本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态 cpu正在运行一个任务,会在两 ...