noxi雑記

.NET、Angularまわりの小ネタブログ

WijmoのSCSSを使用する

Wijmo のビルドインなカスタムテーマに Material テーマがあります。カスタムテーマは 2019v3 までは css ファイルまたは LESS で提供されていましたが、 2020v1 にて SCSS に切り替わりました。私は LESS を SCSS に手動翻訳して Angular Material と組み合わせて使用しているのですがこれを SCSS ベースのものに差し替えるべく、試しに導入します。

続きを読む

ngForとtrackBy

Angular の *ngFor は配列をループして表示するために使用されるディレクティブです。 *ngFor ディレクティブには trackBy というオブジェクト追跡用のプロパティがあり、これを使用すると配列内のオブジェクトの位置変更を追跡することができます。この trackBy を色々試してみたためメモを残しておきます。

続きを読む

.NET Coreコンソールアプリにappsettings.jsonを追加する

ASP.NET Core アプリでは標準で appsettings.jsonappsettings.Production.json を読み込んで設定として使用する、またはソリューションエクスプローラー上で階層表示することができます。しかしコンソールアプリではこのような機能が存在しません。
設定として読み込む事よりも csproj 設定を忘れることが多いのでメモしておきます。

appsettings.json をビルド時に出力ディレクトリへコピーする

csproj ファイルに CopyToOutputDirectory を追加します。値は NeverAlways または PreserveNewest の3択で、それぞれコピーしない、常にコピーする、新しい場合のみコピーする、です。

<Project Sdk="Microsoft.NET.Sdk">

  <!-- 省略 -->

  <ItemGroup>
    <None Update="appsettings.json;appsettings.*.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

</Project>

appsettings.json を階層表示する

csproj ファイルに DependentUpon を追加します。この設定により指定したファイルに対して階層表示がされます。

<Project Sdk="Microsoft.NET.Sdk">

  <!-- 省略 -->

  <ItemGroup>
    <None Update="appsettings.json;appsettings.*.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="appsettings.*.json">
      <DependentUpon>appsettings.json</DependentUpon>
    </None>
  </ItemGroup>

</Project>

.NET CoreとSqlBulkCopy

前回の記事で扱ってみたのですが、 .NET には SqlBulkCopy という SQLServer に対して BulkInsert を実行するためのクラスがあります。注釈にはこう記述されています。

Microsoft SQL Server には、1台のサーバーでもサーバー間でも、あるテーブルから別のテーブルにデータを移動するためのbcpという一般的なコマンドプロンプトユーティリティが含まれています。 SqlBulkCopy クラスを使用すると、同様の機能を提供するマネージコードソリューションを作成できます。 SQL Server テーブル (INSERT ステートメントなど) にデータを読み込む方法は他にもありますが、SqlBulkCopy にはパフォーマンス上の大きな利点があります。

SqlBulkCopy クラスは、SQL Server テーブルのみにデータを書き込む場合に使用できます。 ただし、データソースは SQL Server に限定されません。データを DataTable インスタンスに読み込んだり、IDataReader インスタンスで読み取ることができる限り、任意のデータソースを使用できます。

docs.microsoft.com

使用してみると分かりますがデータの転送時間しかかかっていないんじゃ無かろうか、という程度には高速です。次回使用する時用の使用メモを残します。

続きを読む