參考 教學課程:使用 ASP.NET Core 建立 web API
在本教學課程中,您會了解如何:
使用 dotnet new 創建 webapi 專案
專案名稱: PellokITHomeApi
dotnet new webapi -o PellokITHomeApi
增加 SqlServer 模組
cd PellokITHomeApi
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
增加 InMemory 模組
dotnet add package Microsoft.EntityFrameworkCore.InMemory
開啟 vscode
code -r ../PellokITHomeApi
創建 webapi 時,會有一隻預設API,
可以先啟動服務看看是否正常使用
啟動服務,使用瀏覽器開啟以下測試頁面
https://localhost:5001/WeatherForecast
新增模型類別
mkdir Models
touch Models/Article.cs
public class Article
{
public long Id { get; set; }
public string Name { get; set; }
public bool IsComplete { get; set; }
}
新增資料庫內容
touch Models/ArticleContext.cs
using Microsoft.EntityFrameworkCore;
namespace PellokITHomeApi.Models
{
public class ArticleContext : DbContext
{
public ArticleContext(DbContextOptions<ArticleContext> options)
: base(options)
{
}
public DbSet<Article> Articles { get; set; }
}
}
登錄資料庫內容
修改 Startup.cs
using Microsoft.EntityFrameworkCore;
using PellokITHomeApi.Models;
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ArticleContext>(opt =>
opt.UseInMemoryDatabase("ArticleList"));
services.AddControllers();
}
安裝 CodeGeneration 模組
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
安裝 EntityFrameworkCore 模組
dotnet add package Microsoft.EntityFrameworkCore.Design
使用 aspnet-codegenerator 產生 controller 程式
名稱: ArticlesController
表名稱: Article
Context名稱: ArticleContent
dotnet aspnet-codegenerator controller -name ArticlesController -async -api -m Article -dc ArticleContext -outDir Controllers
產生的程式碼:
標記具有屬性的類別 [ApiController] 。 這個屬性表示控制器會回應 Web API 要求。 如需屬性所啟用之特定行為的相關資訊,請參閱 使用 ASP.NET Core 建立 Web API。
使用 DI 將資料庫內容 (TodoContext) 插入到控制器中。 控制器中的每一個 CRUD 方法都會使用資料庫內容。
創建 Collection
創建 Request
將 HTTP 方法設為 POST。
將 URI 設定為 https://localhost:/api/Atricles 。
例如 https://localhost:5001/api/Articles
選取 [Body]**** (本文) 索引標籤。
選取 [原始]**** 選項按鈕。
將類型設定為 JSON (application/json)。
在要求本文中,針對待辦項目輸入 JSON:
上一篇 Day13 部署 Webapp 使用 SQL服務
下一篇 Day15 網頁基礎知識
我照著改一部分名稱為web05
mysql資料庫的webapi
不知道你是否有解決方法
**
cd web03
dotnet new webapi
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.InMemory
dotnet add package Pomelo.EntityFrameworkCore.MySql
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
底下就開始有問題
D:\csharp\web05>dotnet add package Microsoft.EntityFrameworkCore.Design
正在判斷要還原的專案...
Writing C:\Users\user\AppData\Local\Temp\tmpC659.tmp
info : 正在將套件 'Microsoft.EntityFrameworkCore.Design' 的 PackageReference 新增至專案 'D:\csharp\web05\web05.csproj'。
info : CACHE https://api.nuget.org/v3/registration5-gz-semver2/microsoft.entityframeworkcore.design/index.json
info : 正在還原 D:\csharp\web05\web05.csproj 的封裝...
error: NU1107: 偵測到 Microsoft.EntityFrameworkCore.Relational 有版本衝突。請將 Microsoft.EntityFrameworkCore.Relational 5.0.4 直接安裝/參考到專案 web05 來解決此問題。
error: web05 -> Microsoft.EntityFrameworkCore.Design 5.0.4 -> Microsoft.EntityFrameworkCore.Relational (>= 5.0.4)
error: web05 -> Pomelo.EntityFrameworkCore.MySql 3.2.4 -> Microsoft.EntityFrameworkCore.Relational (>= 3.1.8 && < 5.0.0).
info : 套件 'Microsoft.EntityFrameworkCore.Design' 與專案 'D:\csharp\web05\web05.csproj' 中的所有架構相容。
info : 已將套件 'Microsoft.EntityFrameworkCore.Design' 版本 '5.0.4' 的 PackageReference 新增至檔案 'D:\csharp\web05\web05.csproj'。
info : 正在認可還原...
info : 正在產生 MSBuild 檔案 D:\csharp\web05\obj\web05.csproj.nuget.g.props。
info : 正在將資產檔案寫入磁碟。路徑: D:\csharp\web05\obj\project.assets.json
log : 無法還原 D:\csharp\web05\web05.csproj (471 ms 內)。
D:\csharp\web05>dotnet aspnet-codegenerator controller -name ArticlesController -async -api -m Article -dc ArticleContext -outDir Controllers
Scaffolding failed.
Failed to get Project Context for D:\csharp\web05\web05.csproj.
To see more information, enable tracing by setting environment variable 'codegen_trace' = 1.
RunTime 00:00:01.82
D:\csharp\web05>dotnet aspnet-codegenerator controller -name ArticlesController -async -api -m Article -dc ArticleContext -outDir Controllers
Scaffolding failed.
Failed to get Project Context for D:\csharp\web05\web05.csproj.
To see more information, enable tracing by setting environment variable 'codegen_trace' = 1.
RunTime 00:00:01.82
D:\csharp\web05>dotnet build
Microsoft (R) Build Engine for .NET 16.9.0+57a23d249 版
Copyright (C) Microsoft Corporation. 著作權所有,並保留一切權利。
正在判斷要還原的專案...
D:\csharp\web05\web05.csproj : error NU1107: 偵測到 Microsoft.EntityFrameworkCore.Relational 有版本衝突。請將 Microsoft.EntityFrameworkCore.Relational 5.0.4 直接安裝/參考到專案 web05 來解決此問題。
D:\csharp\web05\web05.csproj : error NU1107: web05 -> Microsoft.EntityFrameworkCore.Design 5.0.4 -> Microsoft.EntityFrameworkCore.Relational (>= 5.0.4)
D:\csharp\web05\web05.csproj : error NU1107: web05 -> Pomelo.EntityFrameworkCore.MySql 3.2.4 -> Microsoft.EntityFrameworkCore.Relational (>= 3.1.8 && < 5.0.0).
無法還原 D:\csharp\web05\web05.csproj (593 ms 內)。
建置失敗。
D:\csharp\web05\web05.csproj : error NU1107: 偵測到 Microsoft.EntityFrameworkCore.Relational 有版本衝突。請將 Microsoft.EntityFrameworkCore.Relational 5.0.4 直接安裝/參考到專案 web05 來解決此問題。
D:\csharp\web05\web05.csproj : error NU1107: web05 -> Microsoft.EntityFrameworkCore.Design 5.0.4 -> Microsoft.EntityFrameworkCore.Relational (>= 5.0.4)
D:\csharp\web05\web05.csproj : error NU1107: web05 -> Pomelo.EntityFrameworkCore.MySql 3.2.4 -> Microsoft.EntityFrameworkCore.Relational (>= 3.1.8 && < 5.0.0).
0 個警告
1 個錯誤
經過時間 00:00:01.50