ASP.NET Core NpgsqlとDapperを使って SELECTした結果をWEB apiで使用する
- 作成日 2021.11.30
- ASP.NET Core
- ASP.NET Core
ASP.NET Coreで、NpgsqlとDapperを使ってSELECTで取得した結果をWEB apiで使用するまでの手順を記述してます。
環境
- OS windows10 pro 64bit
- VSCODE 1.56.2
- postgres sql 13.3
- .NET Core 3.1.409
事前準備
ここではライブラリに「Npgsql」と「Dapper」を使用してます。
nugetで、どちらも追加してます。
nugetを追加したら、「F1」キーを押下して「NuGet Package Manager: Add Package」を選択して
「Npgsql」と「Dapper」と入力してバージョンを指定すれば、追加することができます。
「.csproj」は以下の通りです。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Npgsql" Version="5.0.5"/>
<PackageReference Include="Dapper" Version="2.0.90"/>
</ItemGroup>
</Project>
ここで利用する「postgres sql」の「book」テーブルには、以下のデータが入ってます。
appsettings.json編集
DBへの接続情報である「ConnectionStrings」を「appsettings.json」に追加します。
{
"ConnectionStrings": {
"DefaultConnection": "Server=192.168.xxx.xxx;Port=5432;User Id=username;Password=password;Database=sample"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
Model作成
Modelフォルダを作成して「BookItem.cs」を以下の内容で作成します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Book.Models
{
public class BookItem
{
public int Id { get; set; }
public string Name { get; set; }
}
}
Services作成
Servicesフォルダを作成して「IBookService.cs」を以下の内容で作成します。
using System.Collections.Generic;
using Book.Models;
namespace Book.Services
{
public interface IBookService{
IEnumerable<BookItem> GetBooks();
}
}
同様に「Services」配下に「BookService.cs」を以下の内容で作成します。
using System.Data;
using System.Linq;
using System.Collections.Generic;
using Dapper;
using Book.Models;
namespace Book.Services
{
public class BookService : IBookService{
private IDbConnection connection;
public BookService(IDbConnection connection)
{
this.connection = connection;
}
public IEnumerable<BookItem> GetBooks(){
return connection.Query<BookItem>("SELECT * FROM book");
}
}
}
Startup.cs編集
Startup.csに接続情報やservicesを追加します。
// 追加
using System.Data;
using Npgsql;
using Book.Services;
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
// 追加
services.AddScoped<IDbConnection>(
provider=> new NpgsqlConnection(
Configuration.GetConnectionString("DefaultConnection")
)
);
// 追加
services.AddScoped<IBookService, BookService>();
}
Controller編集
適当なControllerに以下を追加して利用します。
// 追加
using Book.Models;
using Book.Services;
namespace Book.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class BookController : ControllerBase
{
// 追加
private IBookService service;
// 追加
public BookController(IBookService service)
{
this.service = service;
}
// 追加
[HttpGet]
public IEnumerable<BookItem> Get()
{
return service.GetBooks();
}
}
}
これで、起動して、ブラウザからhttps://localhost:5001/api/book/にアクセスするとJSONが表示されていることが確認できます。
-
前の記事
php strposを使って文字列の中に指定した文字列の位置を取得する 2021.11.30
-
次の記事
python PySimpleGUIでOptionMenuの初期値を設定する 2021.11.30
コメントを書く