deezus blog

.Net Core、Typescriptを中心に技術的ノウハウを公開しています

.Net Core

.NetCore3.0で単一バイナリを生成する方法

はじめに .NetCoreでプラットフォームを指定して発行すると、関連dllも大量に含まれます 関連dllが含まれていても実用上問題ありませんが、不特定多数のユーザーに配布する場合、どのファイルを実行すれば良いか分かりにくいかもしれません .NetCore3.0以降…

SQLServerのgeography型をポリゴンで検索する場合は左回りである必要があります

はじめに SQLServerのgeography型をポリゴンで空間検索する際、座標が左回りでなければうまく検索できません NetTopologySuiteを使用し、座標を左回り(時計回り)に修正する方法です SQL geography型のlocationを持つ、customersテーブルを空間検索するとしま…

ASP.NETCore3.0でViewの変更をリアルタイムに反映させる

はじめに .NETCore3.0になりrazorのViewがプリコンパイルされるようになりました 発行時にはパフォーマンス向上などメリットもあるのですが、開発時はViewを変更するたびに再起動しなければ反映されないので非常に面倒です 2.2以前のようにViewのcshtmlの更…

.NETCoreでYAMLを扱う

はじめに システムの設定ファイルなどをYAMLで記載し、ファイルを読み込みオブジェクトにデシリアライズする方法のメモです YamlDotNet インストール nugetでインストールします dotnet add package YamlDotNet 基本的な使い方 下記のようなsetting.yamlを下…

Newtonsoft.Jsonの使い方

はじめに ASP.NETなどではAPIコントローラーでjsonを返す際にNewtonsoft.Jsonが使用されています あまり意識せずに使用していましたが、jsonのパースや値の取得など様々な使い方ができます 基本的な使い方 通常はシリアライズとデシリアライズで事足りるでし…

.NETCore2.2と3.0のHttpClientの挙動の違い

はじめに 先日.NETCore3.0がリリースされました それに伴い、.NETCore2.2で作成したWEBアプリを3.0にアップグレードしましたが、HttpClientで別サイトからデータを取得する部分でエラーが発生するようになりました。 var httpClient = new HttpClient(httpCl…

EntityFrameworkCoreで接続文字列を動的に変更する方法

はじめに ASP.NET Core + EntityFrameworkCore製マルチテナントのシステムで顧客ごとにデータベースが分かれており、動的に接続文字列を切り替える必要がある場合の対処法 構成 下記のようなデータベース構造を想定します 共通データベース 顧客一覧テーブル…

EntityFrameworkCoreでSQLServerの空間情報を扱う方法

はじめに SQLServerでGeography型のカラムを扱う方法です 必要なパッケージ Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite テーブル構造 例として店舗の座標を保存するだけのテーブルとします create table stores ( id int identity constrain…

C#でWebAssemblyが開発できるBlazorを試してみる

はじめに 現時点(2018/10/21)ではプレビュー段階ですがC#でWebAssemblyを開発することができるBlazorというものがあります https://blazor.net/ これを使うことでWebシステムにおいてサーバサイドとクライアントサイドの両方をC#で開発することができます 現…

ジェネリック型制約

はじめに C#では関数に型引数を指定することができます public void TestFunction<T>(){ // 何かしらの処理 } ジェネリック制約 型引数は便利なのですが、どんな型でも許容するため状況によっては使いにくい場合もあります 指定可能な型を制限したい場合、関数</t>…

FileResultでメディアファイルを返す場合の注意点

サーバの処理を通じてcsvなどをダウンロードする際、FileResultを使用します この場合のActionは例えば以下のようなコードになります public IActionResult Csv() { return File(System.IO.File.OpenRead("xxx.csv"), "text/csv"); } 非常に簡単ですが多くの…