T-SQL - DROP IF EXISTS

先週SQL Server 2016の提供が開始されました。 新機能を調べだしたところですが、まずはとりあえずDROP IF EXISTSを試してみました。 開発中、試行錯誤してたりとかでテーブル構造がなかなか固まらず、テーブルを作っては消してまた作るということを繰り返す…

FlagsAttributeを指定したenumの文字列

c#

ものすごく小ネタですが、FlagsAttributeを指定したenumの文字列表現はどうなるんだろ?とふと気になって試してみました。 // トッピング [Flags] public enum Toppings { None = 0x00, // なし Nitamago = 0x01, // 煮卵 CharSiu = 0x02, // チャーシュー M…

ASP.NET MVC - FilterAttribute.OrderとFilterScopeによるフィルタの実行順を確認する

FilterAttribute.OrderとFilterScopeによるフィルタの実行順を確認します。 同じフィルタが複数ある場合に FilterAttributeのOrderプロパティの昇順(小さい値から大きい値の順序) FilterScopeの昇順 でフィルタがソートされて実行される、というあたりを確…

ASP.NET MVC - input要素のplaceholder属性に使うHtmlHelperの拡張メソッドを作ってみた

気持ち今さら感はありますが、input要素のplaceholder属性にテキストを出力するためのHtmlHelperの拡張メソッドを作ってみました。正直なところやってみて作りました!というほどではなかったんですが、まあ試してみたかったんです、ということで。 モデルの…

LINQ - 空のシーケンスでMin/Max/Averageを使ったときのメモ

LINQで空のシーケンスに対してMin/Max/Averageを使うとInvalidOperationExceptionが発生する場合があります。言われるとそっかと思うんですが、SQLの感覚もあってかうっかりやっちゃうかなあと思ったのでちょっとメモしておきます。 たとえば、intの空のシー…

SqlConnectionの接続タイムアウトを確認してみる

SQL Serverで単にタイムアウトと言っても接続タイムアウトとクエリタイムアウト(コマンドタイムアウト)の2つがあります。発生するタイミングが違いますし、それぞれ理解しておきたいなと思います。 まずはちょっと簡単に整理します。 接続タイムアウト 名…

SQL Server - 主キーの一覧を取得するクエリ

前回は外部キーの一覧を取得するクエリを書いてみました。 ichiroku11.hatenablog.jp 今回は外部キーのときと同じようにテーブル名やカラム名を含めて主キーの一覧を取得するクエリを書いてみました。 select i.name as [主キー名], ic.index_column_id as […

SQL Server - 外部キーの一覧を取得するクエリ

テーブル名やカラム名を含めて外部キーの一覧を取得するクエリです。探したら似たようなクエリが見つかる気もしますが練習もかねて書いてみました。また使うことがあるかなと。 select fk.name as [外部キー名], fkc.constraint_column_id as [外部キーカラ…

Entity Framework - 条件付きで関連エンティティを読み込む

Includeメソッドを使って関連エンティティを読み込むとき、読み込む関連エンティティをフィルタしたいことがあると思います。というかありました。 Includeメソッドで書けるのかなと思って調べましたがどうもできない様子。代替案がないかなと思って調べたと…

SQL Server - NULLを含んだ複合外部キーのメモ

複合外部キーを使うことになったんですが、外部キー制約を設定するカラムの1つの値がNULLの場合に想像していた動きと違ったのでメモを残しておきます。(想像と違うのはわたしだけかもですが) 次のようなテーブルがあったとします。SampleBに外部キー制約が…

Entity Framework - EXISTSを使ったサブクエリのサンプル

WHERE句にEXISTSを使うようなデータ取得をEntity Frameworkで実行したい場合、LINQのAnyメソッドを使うようです。想像通りという気もしますが適当な1対多のテーブルとデータで試して出力されるクエリを確認してみます。 まずはモデルとDBコンテキストを用意…

SQL Server - null以外の値でユニークにする

SQL Serverでnull以外の値でユニークにしたいときがあると思います。 先に方法を書くと「フィルター選択されたインデックス(filtered index)」を使うことでnull以外の値でユニークを実現できます。 フィルター選択されたインデックスの作成 ということで今…

jQuery.ajaxでJSON形式の空のレスポンスはエラー扱いになる

この前ちょっとはまったのでメモ。まさしくこれ。 jQuery Core 1.9 Upgrade Guide | jQuery Prior to 1.9, an ajax call that expected a return data type of JSON or JSONP would consider a return value of an empty string to be a success case, but r…

Entity Framework - ワイルドカード文字を使った文字列検索

Entity FrameworkでstringのContainsメソッド、StartsWithメソッド、EndsWithメソッドを使って文字列を検索すると、LIKE演算子で「%」を使ったselect文が作成されます。 MSDNとかのドキュメントっぽいものは見つけられませんでしたが、適当なエンティティとD…

Entity Framework - 複合型のマッピング先のカラム名を変更する

Entity Frameworkで特に指定しない場合、複合型(ComplexType)は「{プロパティ名}_{複合型のプロパティ名}」という名前のカラムにマッピングされます。たとえば次のようになります。 エンティティ // メールアドレス(複合型) public class MailAddress { …

ASP.NET MVC - コレクションのコレクションにバインドする

できるかな?できるよね?と思って試したらやっぱりできたのでメモ。 コレクションにバインドする まずはおさらいということでコレクションにバインドするサンプルです。 name属性に配列のようにインデックスを指定します。 ビュー @using (Html.BeginForm()…

LINQでn個ずつグルーピング

前に少し考えたときは思いつかなかったのですが、今日ふと思い立って書いてみました。 コレクションの要素を5個ずつでグルーピングするサンプルです。 static void Main(string[] args) { var letters = "abcdefghijklmnopqrstuvwxyz".ToCharArray(); Consol…

dapper dot net - 1対多のテーブルをコレクションプロパティにマッピングする

いつものごとくタイトルが微妙な気もしますが、やりたいことは「DBに注文テーブルと注文明細テーブルがあって、注文明細のコレクションを持っている注文にマッピングしたい」といった感じのことです。 てことでマッピングするクラスです。 // 注文 class Ord…

Entity Framework - SkipメソッドとTakeメソッドを使うとFETCH句とOFFSET句が使われることを確認する

SQL Server 2012からOFFSET句とFETCH句が追加されて、クエリだけでページングを実現できるようになりました。Entity Frameworkを使っているときに、SkipメソッドとTakeメソッドを使うとOFFSET句とFETCH句が使われるの?ってあたりが気になったのでログで発行…

SqlCommandがタイムアウトした時にスローされるSqlExceptionを確認する

SqlCommandにはタイムアウトの時間を設定するSqlCommand.CommandTimeoutプロパティがあります。 SqlCommand.CommandTimeout プロパティ (System.Data.SqlClient) MSDNからもわかりますがタイムアウトした時にはSqlExceptionがスローされます。 このSqlExcept…

LINQでクロス結合

クロス結合(CROSS JOIN)はLINQを使ってどうやって書くんだろうと気になったので調べてみました。 SQLでもほとんど使わないのでC#でもほとんど使わないとは思いますが・・・。重複ありのすべての組合わせを出したいときに使えるかなーと思います。まぁほと…

「ファイル名を指定して実行」で起動する管理ツールのメモ

Win + Rのあれですね。 主にWebサーバやDBサーバを管理するときに使いそうなコマンドです。というより最近覚えたコマンドとたまに使うので覚えたいコマンド。 管理ツール コマンド IISマネージャー inetmgr SQL Server Management Studio ssms コンピュータ…

Json.NET - enumを文字列でシリアライズする

久しぶりにJson.NETのメモです。 Json.NETを使ってenum値をJSONに出力するとき、デフォルトでは数値になります。数値だとぱっと見わかりにくいので文字列で書き出したいときがあると思います。そんなときはStringEnumConverterを使います。 使い方はたぶん2…

cURLのメモその2

cURLの個人的なメモその2です。 その1はこちら。 とりあえず覚えた cURL のオプション - いちろぐ 今回はファイルのアップロードとダウンロードです。 ファイルのアップロード multipart/form-dataでファイルを送信するには-Fオプションを指定します。name=v…

TypeScript - アロー関数でオブジェクトリテラルを返そうとしてちょっとはまった話

いい解決方法が見つかったわけではありませんが、ちょっとはまった記念に残しておきます。 TypeScriptで次のようにアロー関数を使って単にオブジェクトリテラルを返そうとしたのですが、コンパイルエラーに・・・。 // TypeScript [1, 2, 3].map((value, ind…

T-SQL - TOP句とパラメータ

SELECT文のTOP句にパラメータを使用できることを初めて知りました。 こんな感じ。Dapperでクエリを実行するサンプルです。 // TOP句に@countを指定する var sql = @" select top (@count) * from (values (N'ホルモン', 490), (N'カルビ', 880), (N'キムチ',…

再帰トリガーとRECURSIVE_TRIGGERSオプションのメモ

UPDATEトリガーで自身を定義したテーブルに対してまたUPDATEしたら無限ループに入らないの?と疑問に思ったので試してみましたと言う内容です。 説明するよりクエリを見てもらった方がわかりやすいと思うので、さっそくテーブルとUPDATEトリガーを。UPDATEト…

DMLトリガーを試す

トリガーをほぼ使ったことがないトリガー初心者なのですが、使う機会がでてきそうで調べていました。とりあえずDMLトリガーの、さらにAFTERトリガーにしぼって気になったところを試してみたので、少しメモとして残しておきます。 まずはテスト用のテーブルと…

PRINT・RAISERRORとSqlConnection.InfoMessageイベント

T-SQLのPRINTを使うとクライアントにメッセージを通知できます。そのメッセージはSqlConnection.InfoMessageイベントで取得できます。 また、RAISERRORでも重大度(severity)が10以下の場合は、同様にSqlConnection.InfoMessageイベントでメッセージを取得…

再帰CTE(共通テーブル式)で階層構造のパスを作る

検索すると再帰CTEのサンプルはいろいろ見つかりますが、自分で書いたクエリを残しておきたいなと思って書いてみました。おさらいというかメモというか。 共通テーブル式を使用する再帰クエリ 上記MSDNにもありますが、再帰CTEのざっくりした書き方はこんな…