Visual Studio(2017, Code) でも利用できるようになった editorconfig が便利

C#のコーディングでは、インデントサイズ2が好みなのですが、世の中ではインデントサイズ4が多数派らしく、プロジェクトの規則に従ってVisualStudioの設定を随時書き換えたりするのが億劫でした。

Visual Studio 2017から editorconfig を利用することが出来るため、インデントサイズを含めたプロジェクトごとのエディタ―設定を設定ファイルとしてIDEから独立させることができるようになりました。

動画にしてみたので見てください。

続きを読む

Dapperにて、TVP(テーブル値パラメーター)を扱う(速度比較)

前回までのあらすじ

Dapperにてユーザー定義テーブル型をストアドプロシージャのパラメータとして利用する方法を検討した。

mrgchr.hatenablog.com

今回はそれらの速度比較をします。

続きを読む

Dapperにて、TVP(テーブル値パラメーター)を扱う

たとえば、以下のようなテーブル定義と、

CREATE TABLE [dbo].[TodoItems](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](50) NOT NULL,
    [IsDone] [bit] NOT NULL,
    CONSTRAINT [PK_TodoItems] PRIMARY KEY CLUSTERED ([Id] ASC)
)

以下のようなユーザー定義テーブル型*1

CREATE TYPE [dbo].[tvpIds] AS TABLE(
    [Id] [int] NOT NULL
)
CREATE TYPE [dbo].[tvpTodoItems] AS TABLE(
    [Name] [nvarchar](50) NOT NULL,
    [IsDone] [bit] NOT NULL
)

さらに、以下のようなストアドプロシージャを定義します。

CREATE PROCEDURE [dbo].[usp_CreateTodoItems] 
    @Items [dbo].[tvpTodoItems] READONLY
AS
BEGIN
  SET NOCOUNT ON;

  INSERT INTO [dbo].[TodoItems]
    ([Name], [IsDone])
  OUTPUT inserted.[Id], inserted.[Name], inserted.[IsDone]
  SELECT [Name], [IsDone]
  FROM @Items;
END
CREATE PROCEDURE [dbo].[usp_DeleteTodoItems] 
    @Ids [dbo].[tvpIds] READONLY
AS
BEGIN
  SET NOCOUNT ON;

  DELETE [dbo].[TodoItems]
  OUTPUT deleted.[Id]
  WHERE [Id] IN (SELECT [Id] FROM @Ids);
END

今回はこの二つのストアドプロシージャをDapperを介して利用する方法を検討します。

*1:すっかり忘れていましたが、PRIMARY KEYとか定義した方が良いと思います

続きを読む

Persisted Computed Columnの計算にユーザー定義関数を用いるとパフォーマンスに悪影響がある

良かれと思ってやったのですが

今までComputed Columnの例ではロジックを分ける意味で、ユーザー定義関数を用いていました。

mrgchr.hatenablog.com

続きを読む

Persisted Computed Columnがなぜか不明瞭になった件

何故これがダメなのかが分からない

先日の消費税計算のComputed Columnを、Persisted指定したら何故かエラーになりました。

テーブル 'Orders' の計算列 'SalesTax' を保存できません。この列は不明確です。

これを解決します。

続きを読む

ScreenToGifが便利

Gifスクリーンキャプチャをもっと便利に使おう

ScreenToGifというソフトが今まで使っていたGifキャプチャよりも便利だったのでお知らせします。

www.screentogif.com

続きを読む

Computed Columnの計算結果は別のComputed Columnで参照できない

ので、Viewを使おう

タイトルそのまんまなのですが、SQL ServerのComputed Columnの計算結果は別のComputed Columnで参照するとエラーになります。

続きを読む