C#(asp.net)でDapperを利用してみる
C#(asp) docker環境でmigrationを利用するの続き
table of contents
- 依存関係を設定する
- Program.csをスコープを設定する
- データを利用する
1. 依存関係を設定する
% dotnet add package Dapper
% dotnet add package System.Data.SqlClient
% dotnet add package Npgsql
% dotnet add package Microsoft.Data.SqlClient
WebApi.csproj
<PropertyGroup>
<ItemGroup>
<PackageReference Include="Dapper" Version="2.1.66" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="6.0.1" />
<PackageReference Include="Npgsql" Version="9.0.3" />
<PackageReference Include="System.Data.SqlClient" Version="4.9.0" />
</ItemGroup>
</ProjectGroup>
2. Program.csをスコープを設定する
Program.cs
using System.Data;
using Microsoft.Data.SqlClient;
using Microsoft.Extensions.DependencyInjection;
using Npgsql;
builder.Services.AddScoped<IDbConnection>(provider =>
{
var connectionString = "Server=postgresql_container;Port=5432;Database=example;User Id=example;Password=example;";
return new NpgsqlConnection(connectionString);
});
3. データを利用する
Repository.cs
using System.Data;
using Dapper;
namespace BugReport.Repository
{
public class BugReportRepository
{
private readonly IDbConnection _connection;
public BugReportRepository(IDbConnection connection)
{
_connection = connection;
}
public BugReportModel? GetOneById(int id)
{
return _connection.QueryFirstOrDefault<BugReportModel>("SELECT id, uuid, title FROM bug_report WHERE id = @id", new { id = id });
}
}
public class BugReportModel
{
public int id { get; set; }
public Guid uuid { get; set; }
public string title { get; set; }
}
}
定義したRepositoryのScopeを定義する。
Program.cs
using BugReport.Repository;
builder.Services.AddScoped<BugReportRepository>();