.NET Framework 3つのDB接続方法の使い分け

.NET FrameworkではADO.NET、LINQ to SQL、Entity Frameworkの三種類の接続方法が提供されています。どの接続方法を選択するのが良いのでしょうか?

ADO.NET

もっとも古くから提供されている接続方法です。
原則としてSQL文を直接記述するので、SQL Serverのすべての機能を利用することができます。一方で静的型チェックなどの恩恵を受けることが難しい(型付きDataSetを使えば可能だが面倒)のでコーディング効率が落ちそうですが、ユーザーコントロールとのデータバインディングを使用すればコーディング効率も決して悪くはありません。

LINQ to SQL

SQL Serverのスキーマを元にクラスを自動生成する簡易的なORマッパーです。
原則として自動生成されるSQLを使うことになるので、一般的なORマッパーと同じく非効率なSQL文が生成される事によるデメリットもあります。その一方で一旦データベースから取得したデータに対して、さらに検索や集計をかける事も容易にできるのでうまく活用すればデータベースの負荷を下げる可能性もあります。静的型のチェックによる恩恵もあるのでADO.NETに比較してコーディングは楽になるでしょう。
.NET 3.5から提供されていますが、その後は殆どアップデートされておらず、プロダクトの継続性に疑問符が付きます。

Entity Framework

LINQ to SQLとほぼ同時期、.NET 3.5 SP1から提供されている接続方法です。
Entity Frameworkはクラス設計を元にSQL Serverのスキーマを生成するORマッパーです。先にクラス設計を行うので既存のデータベースに対して利用するのは難しく、利用できるのは新規に設計するときに限られます。また逆にEntity Frameworkを使わずにSQL Serverにアクセスする必要が生じた場合に苦労する可能性があります。

何を使えばよいのかは時と場合によります。私は静的型のチェックによる恩恵を得られ、既存データベースへ適用できる点でからLINQ to SQLの活用機会が多いです。

ClosedXMLでSortによる並び替えができない

Microsoft Excelで作成したxlmxファイルをClosedXMLで開いて捜査している場合、Sortメソッドによる並び替えに失敗する場合があります。ソートしようとしている範囲内にClosedXMLが対応していない書式情報があるのが原因です。Microsoft Excelでファイルを作成するときに並び替え範囲内の書式を削除しておくと、正常に並び替える事ができます。

Visual Studio 2015でSQLiteを参照できない

Visual Studio 2015でNuGetパッケージの管理からSystem.Data.SQLiteを選択してインストールした場合、インストール自体はエラーを出さずに正常終了するが、実際にはインストールできていない。Visual Studio 2015のサーバーエクスプローラー等のデータベースマネージャに関する仕様が公開されなかったため、System.Data.SQLiteのVisual Studio 2015対応が遅れたことが事が原因。
Visual Studio 2013で作成したプロジェクトでSQLiteを参照設定している場合、System.Core等も含む、参照設定しているコンポーネント全てで「参照コンポーネント~が見つかりませんでした。」というエラーが表示される。
System.Data.SQLite Downloadsからsqlite-netFx46-setup-bundle-x86-2015-1.0.98.0.exeをダウンロードしてインストールすれば使用できるようになる。
Visual Studio 2013で作成したプロジェクトでSQLiteを参照設定している場合は、NuGetパッケージの管理からSQLite関連のNuGetパッケージをアンインストールしてから、sqlite-netFx46-setup-bundle-x86-2015-1.0.98.0.exeでインストールしたSQLite関連DLLを参照するように設定すればよい。

Visual StudioでGroongaを使用するには

groongaのWindows用バイナリに含まれるライブラリは拡張子が….aとなっている事から分かるようにLinux用の環境でビルドされたものです。Visual Studioからgroonga APIを使用するにはソースコードをダウンロードしてWindows上でビルドしなおす必要があります。

次のURL(http://www.cmake.org/)よりダウンロードして、CMakeをインストールします。特に特筆すべき事はありません。

Visual Studio Expressをインストールします。Visual C++ Express 2010は次のURL(http://www.microsoft.com/visualstudio/jpn/downloads)からダウンロードできます。groongaのリファレンスマニュアルではVisual C++ Express 2010を前提に記載されていますが、現行バージョンのVisual Studio 2013 Expressでも問題ありません。

CMAKEのインストール先フォルダをPATHに追加します。

Visual Studioのインストール先フォルダにあるvcvarsall.batを実行して環境変数を設定します。

下記のコマンドを実行してインストールします。Visual Studio 2013を使用する場合には、「Visual Studio 10」を「Visual Studio 12」に置換えます。

cmake . -G "Visual Studio 10 Win64" -DCMAKE_INSTALL_PREFIX=C:\groonga
cmake --build . --config Release
cmake --build . --config Release --target Install

多数のワーニングが表示されますが、気にするのは止めましょう。

error : Cannot find module ‘q’が発生する

Visual Studio 2013 Update 4およびVisual Studio Tools for Apache Cordova CTP3.0の導入後に、Cordovaのプロジェクトをビルドすると「error : Cannot find module ‘q’」が発生してビルド出来なくなる場合があります。これはNode.js関連パッケージのインストールが正常に完了していないことが原因です。Visual Studio 2013のインストールフォルダの下にある「Common7\IDE\Extensions\spzoscmg.jkh\package\svs-mda」および「Common7\IDE\Extensions\spzoscmg.jkh\package\svs-mda-targets」に移動した後、以下のように「npm install -g」コマンドを使ってインストールを再度実行すると直ります。

cd C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extension\sspzoscmg.jkh\package\svs-mda
npm install -g
cd C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\spzoscmg.jkh\package\svs-mda-targets
npm install -g

Visual Studio Tools for Apache Cordova CTP2からCTP3への更新

Visual Studio 2013 Update4をインストールする前に Visual Studio Tools for Apache Cordova CTP2をインストールしていた場合には、Visual Studio Tools for Apache Cordova CTP3をインストールする必要がある。(インストールし直さないとTypeScript関連のコンパイルエラーになる)

インストーラをダウンロードするまでの手順は Visual Studio Tools for Apache Cordova CTP 2の時と同様だが、ダウンロードしたvs2013mda_0.3.exeを実行すると下記のようなエラーが出る。

install

旧バージョンのアンインストールが必要な旨と、ダウンロード手順のリンク先が示されているが、リンク先のアンインストール手順はCTP1からCTP2へ更新する場合の手順で、この通りに実施してもアンインストールできない。

リンク先の「You cannot install Visual Studio Tools for Apache Cordova CTP3.0 in Visual Studio 2013」に書かれている以下のコマンドの赤字の部分を次のように書き換える必要がある。

リンク先のページ上に記載されているパス:

“%ProgramData%\Package Cache\{dea88246-f74a-4171-ad6c-d9c978bf2973}s2013mda_0.1.exe” /uninstall /passive /force /burn.ignoredependencies={53d408db-eb91-43fb-9d8f-167681c19763};vsupdate_KB2829760

実際にファイルが置かれている場所のパス:

“%ProgramData%\Package Cache\{38f367f1-1468-4f16-a4c4-29747084003b}s2013mda_0.1.exe” /uninstall /passive /force /burn.ignoredependencies={53d408db-eb91-43fb-9d8f-167681c19763};vsupdate_KB2829760

上記コマンドを実行するとCTP2のアンインストールが始まります。アンインストール完了後にあらためてvs2013mda_0.3.exeをインストールすれば完了です。

Visual Studio Tools for Apache CordovaでENOENT, no such file or directory ‘C:\Users~\.cordova\lib\android\cordova3.5.0\VERSION’が発生する

Visual Studio Tools for Apache CordovaのHello Worldに従って、新規に作成したプロジェクトをAndroidのエミュレーター上で実行しようとしても「EXEC : error : ENOENT, no such file or directory ‘C:\Users\<username>\.cordova\lib\androidc\ordova3.5.0\VERSION’」となり実行できない。Multi-Device Hybrid Apps FAQでは「C:\Users\<username>\.cordova\lib\tmp<somestring>」以下からVERSIONファイルを検索してコピーするように記載されている。実際にはVERSIONファイルだけではなくて、「C:\Users\<username>\.cordova\lib\tmp<somestring>」以下にあるファイルをすべてコピーする必要がある。

Visual Studio Tools for Apache CordovaでENOENT, no such file or directory ‘C:\Users~\.cordova\lib\android\cordova3.5.0\VERSION’が発生する

Visual Studio Tools for Apache CordovaのHello Worldに従って、新規に作成したプロジェクトをAndroidのエミュレーター上で実行しようとしても「EXEC : error : ENOENT, no such file or directory ‘C:\Users\<username>\.cordova\lib\androidc\ordova3.5.0\VERSION’」となり実行できない。Multi-Device Hybrid Apps FAQでは「C:\Users\<username>\.cordova\lib\tmp<somestring>」以下からVERSIONファイルを検索してコピーするように記載されている。実際にはVERSIONファイルだけではなくて、「C:\Users\<username>\.cordova\lib\tmp<somestring>」以下にあるファイルをすべてコピーする必要がある。

Visual Studio Tools for Apache CordovaでENOENT, no such file or directory ‘C:\Users~\.cordova\lib\android\cordova3.5.0\VERSION’が発生する

Visual Studio Tools for Apache CordovaのHello Worldに従って、新規に作成したプロジェクトをAndroidのエミュレーター上で実行しようとしても「EXEC : error : ENOENT, no such file or directory ‘C:\Users\<username>\.cordova\lib\androidc\ordova3.5.0\VERSION’」となり実行できない。Multi-Device Hybrid Apps FAQでは「C:\Users\<username>\.cordova\lib\tmp<somestring>」以下からVERSIONファイルを検索してコピーするように記載されている。実際にはVERSIONファイルだけではなくて、「C:\Users\<username>\.cordova\lib\tmp<somestring>」以下にあるファイルをすべてコピーする必要がある。

Visual Studio Tools for Apache CordovaでENOENT, no such file or directory ‘C:\Users~\.cordova\lib\android\cordova3.5.0\VERSION’が発生する

Visual Studio Tools for Apache CordovaのHello Worldに従って、新規に作成したプロジェクトをAndroidのエミュレーター上で実行しようとしても「EXEC : error : ENOENT, no such file or directory ‘C:\Users\<username>\.cordova\lib\androidc\ordova3.5.0\VERSION’」となり実行できない。Multi-Device Hybrid Apps FAQでは「C:\Users\<username>\.cordova\lib\tmp<somestring>」以下からVERSIONファイルを検索してコピーするように記載されている。実際にはVERSIONファイルだけではなくて、「C:\Users\<username>\.cordova\lib\tmp<somestring>」以下にあるファイルをすべてコピーする必要がある。