EFCoreでChangeTrackerの内容を確認する
EFCoreのChangeTrackerについて今まで雰囲気で分かった気になっていたので、理解を深めるためにDbContextのデータをいろいろ操作しながらChangeTrackerの内容を確認してみます。実行環境VSCode + C# Dev Kit.NET 7Microsoft.EntityFrameworkCore.InMemory...
View ArticleEFCoreのSaveChangesAsyncをoverrideして共通処理を差し込む
DBなどの永続化層のデータを更新する際に作成日や更新日などの日付を更新したいことがよくあります。そのあたりの処理を共通化してみたいと思います。実行環境VS 2022 17.6.5.NET 7EF Core 7.0.4Entityを用意するITimeStampというインタフェースを持つEntityを定義します。publicclassTodo : ITimeStamp { publicint Id {...
View ArticleEFCoreのTimestampで楽観的排他制御を行う
EFCoreのTimestampを使って楽観的排他制御をやってみます。実行環境VS2022 17.6.5EFCore 7.0.10SQL Server 2022Entityを用意する次のようなEntityを用意しました。public record Todo { publicint Id { get; set; } publicstring? Content { get; set; } public...
View ArticleSwashbuckle.AspNetCore.Cliでswagger.jsonを出力する
CI/CDでswagger.jsonを出力したかったのでやってみました。実行環境VS2022 17.7.4.NET 7Swashbuckle.AspNetCore.Cli 6.5.0Swashbuckle.AspNetCore.Cliをインストールするプロジェクトのルートで.NET ツールをインストールします。dotnet new tool-manifestdotnet tool install...
View Articleコードを書くためにサブスクライブしているもの
C#でASP.NET Coreを使ったWeb開発をメインでやっている私がコードを書くためにサブスクライブしているものをあげていきます。ReSharper言わずと知れたVisual Studioの拡張機能です。本家よりも強力なIntelliSence、括弧の自動補完などなどいろんな機能に助けられています。...
View ArticleFakeTimeProviderを試す
.NET 8からDateTimeに依存した処理のテストに役立つTimeProviderとFakeTimeProviderという仕組みが追加されたので試していきます。実行環境VS2022 17.8.1.NET 8準備NuGetパッケージをインストールします。これでFakeTimeProviderが使えるようになります。...
View ArticleVS2022のhttpファイルで環境毎のパラメータを用意する
実行環境VS2022 17.8.3.NET 8httpファイルを用意する適当なhttpファイルを用意します。HostAddressとParameterは後述の別ファイルで定義します。GET {{HostAddress}}?q={{Parameter}} httpenv.jsonを用意するhttpenv.jsonを作成してhttpファイルと同じ階層か上位の階層に置きます。 develop,...
View Article検証属性付きのrecordからswagger.jsonを生成するときの悩み
ASP.NET Coreでリクエストパラメータにrecordを使った場合に出力されるswagger.jsonにRequired等の属性が反映されない問題があったのでまとめました。 問題になっているのはだいたい次のIssueと同じ内容です。github.com最近はエンドポイントのリクエストパラメータにrecordを使うことが多く、次のようなパラメータを作ってASP.NET...
View ArticleDockerを使ったパルワールド専用サーバの構築方法
パルワールドの専用サーバを建ててみたかったのでDockerコンテナを使ってやってみました。実行環境Docker Desktop for Windows専用サーバの準備docker composeで簡単に専用サーバのコンテナを作ってくれるRepositoryがあったのでありがたく使わせてもらいます。github.comgit clone後にプロジェクトルートで実行します。docker compose...
View ArticleWebApplicationFactoryを使ってASP .NET Core WebAPIでE2Eテストを試す
実行環境.NET 8Visual Studio 17.8.3xUnit 2.4.2準備ASP .NET Core WebAPIのプロジェクトとユニットテストのプロジェクトを作成し、ユニットテストのプロジェクトからWebAPIのプロジェクトを参照するように設定しておきます。...
View ArticleBlazorのStream Renderingを使ってYoutubeから大量のコメントを取得・表示する
BlazorのStream Renderingを使ってYoutubeの動画から取得した大量のコメントを表示してみようと思います。実行環境Visual Studio 2022 17.9.6.NET...
View ArticleGitHubのPull Request Templateを作成する
PRを作るときテンプレートがあると便利なので試してみました。テンプレートの作成テンプレート(pull_request_template.md)を作成してリポジトリの以下のいずれかの場所に置きます。リポジトリのルートディレクトリdocs.githubなんとなくGitHub関連のファイルは.githubにまとめて置いておきたいので.githubにテンプレートを作りました。## 変更したこと ##...
View ArticleConsoleAppFramework v5を試す
ConsoleAppFramework v5がめちゃくちゃ良いらしいという噂を聞いたので試してみました。github.com実行環境.NET 8Visual Studio 2022 17.10.3ConsoleAppFramework 5.2.1シンプル構成で実行してみる一番シンプルな構成で実行してみます。using ConsoleAppFramework; ConsoleApp.Run(args,...
View ArticleEFCoreのグローバルクエリフィルターを試す
永続化層から論理削除されたデータの取得などに便利なグローバルクエリフィルターを試していきます。実行環境Visual Studio 2022 17.10.5.NET8データを用意する次のようなテーブルから、公開日(PublishedDateTime)を過ぎているデータのみ取得するようにしてみます。DbContextとEntityはこんな感じです。publicclassAppDbContext :...
View ArticleReSharperを日本語化する
ReSharper 2024.2からUIの日本語化ができるようになったのでやっていきます。実行環境Visual Studio 2022 17.11.2ReSharper...
View ArticleDIコンテナを自前で実装してみる
ASP.NET Coreなどで今では当たり前のように使われるDIの仕組みですが、実際のところどうやって実装されているのかよく分かっていなかったので自前で実装して理解を深めようと思います。目指すもの次のようにDIコンテナへの型の登録とインスタンスの解決をできるところを目指します。var container =new DiContainer(); // コンテナに適当なサービスを登録する...
View ArticleGuid.CreateVersion7()を試す
.NET9から新しくBCLに追加されたGuid.CreateVersion7()を試していきます。実行環境.NET Fiddle.NET9 RC2Version7?Guid.CreateVersion7()はUUID Version 7を実装したGuidです。従来のGuid.NewGuid()ではUUID Version 4のUUIDが作られます。UUID Version...
View Articleファイルスコープ名前空間を有効にしたい
C#10から使えるようになったファイルスコープ名前空間ですが、 こんな感じのコードが、namespace MyNamespace { classMyClass { } } こんな感じでnamespace MyNamespace; classMyClass { } namespace のあとにくる{}を省略してインデントが減るので個人的にかなり気に入っています。...
View ArticleGitHub Actionsで日本の祝日一覧を取得する
国が公開している祝日の一覧のcsvがあります。www8.cao.go.jpこのcsvを定期的に確認して、自分のリポジトリで管理しているcsvと差分があればプルリクエストを作成するActionsを作ってみます。権限の設定Actionsの権限を設定します。Settings→Actions→GeneralからWorkflow permissions セクションで、 "Read and write...
View ArticleGitHub Actionsで日本の祝日一覧を定期的に取得する
国が公開している祝日の一覧のcsvがあります。www8.cao.go.jpこのcsvを定期的に確認して、自分のリポジトリで管理しているcsvと差分があればプルリクエストを作成するActionsを作ってみます。権限の設定Actionsの権限を設定します。Settings→Actions→GeneralからWorkflow permissions セクションで、 "Read and write...
View Article