読者です 読者をやめる 読者になる 読者になる

Kobarin's Development Blog

C#やASP.NET、公開APIなどについての記録です。

LINQPadで、ASP.NET MVCのModelを呼び出すの巻

MVCを始めて数ヶ月経ちますが、LINQ to Entitiesのテスト実行ができずに不便に感じていました。ControllerやModelで定義している場合、プロジェクトごとビルドしなくてはならず、効率的とはいえません。
ちなみにSQL Serverには、Common SQL Environmentという伝説的な便利ツールがありましたので、この中でSQLのテスト実行してから本番環境で実行していました。(8か10以降のWindowsでは正常動作しないので黒猫 SQL Studio使わせてもらっています)。

LINQ実行環境(?)、LINQPad

LINQにもテスト環境ツールってないのかね」と思い調べると、ありました。

https://www.linqpad.net/

Standard版は無料でDLできインストールも難なく終わりましたが、問題は

「既存のEntity モデルを手間なく呼び出せるか」

です。テスト実行が目的なので、出来ることなら、楽に、素早く、確実にやってしまいまいたいものです。

ASP.NET MVCサイトの指定

まずLINQPadを開いて行うのが、左ペインの「Add Connetion」です。

f:id:fskkoba:20160520114108p:plain


「Choose data context」ウィンドウが開くと、上下に選択ボックスが分割されていますが、上段は「Build data…」にもある通り新たにコンテクストを作成する選択肢で、下段は「Use a typed data…」のとおり既存のコンテクストを選べる欄です。
当記事では既存のMVCサイトのコンテキストを使う事を想定しているため、下段の選択肢から「Entity Framework (DBContext)」を選び「Next」を押します。

f:id:fskkoba:20160520115029p:plain

すると「Entity Framework DBContext Connection」ウィンドウが開くので、「Path to custom Assembly」欄に、ASP.NET MVCプロジェクトのdllを選択します。
私の場合は、「(Documents Root) \ Visual Studio 2015 \ Projects \ (Project Name) \ (Project Name) \ bin \ (Project Name).dll」でした。

f:id:fskkoba:20160520115332p:plain

次にすかさず「Choose Custom Type」が現れます(私の場合はSQLServerの接続文字列が2つあったので現れましたが、1つしかなければ現れないかもしれません)。対象の方を選択して「OK」を押します。

f:id:fskkoba:20160520115405p:plain

最後に、「Path to application config file…」の横にある「Choose」を選択し、サイト内の「web.confing」を選択します。
私の場合は、「(Documents Root) \ Visual Studio 2015 \ Projects \ (Project Name) \ (Project Name) \ web.config」でした。

f:id:fskkoba:20160520115842p:plain

これで「OK」ボタンを押して完了です。
元の画面の左ペンに接続情報が追加されているはずです。
これでMVCサイト内と(ほぼ)同じようにLINQる事ができますね。

参考

最初なかなかわかりませんでしたが、以下のサイトを参考にさせていただきました。

Kevin LaBranche - Connecting LinqPad to Entity Framework Code First