ASP.NET Coreサンプルアプリ「MusicStore」を動かす
開発環境が一通り整いましたので、実際に開発の方を試したくなります。
テンプレートのコードを眺めると、MVCフレームワークを1つ2つ齧ったことがあれば、ざっくりとした挙動は想像できます。
しかし、もう少し、情報が欲しい。
Web案件では主にPHPで、業務系案件は古臭いWebフォームを扱うばかりだった私は、ASP.NET MVC
というMicrosoftご謹製フレームワークについて、全く知識がありません。
なにか手頃な、そこそこ主だった実装があるサンプルコードが無いかと探したら、「MusicStore」というサンプルに行き着きました。
aspnet/MusicStore Sample MusicStore application that uses MVC and Entity Framework.
音楽ショップのサンプルということで、ユーザー認証やカート機能など、実践的なコードが読めそうです!
早速ソースを頂いて、Visual Studio
で開いてみます。
実行してみる
README.md
に実行の仕方が書いてあるんですが、
If you have Visual Studio 2015 i. Open MusicStore.sln in Visual Studio 2015 and run the individual applications on IIS Express.
やー。ずいぶん、ざっくりっすね~。
DBの記述が見当たりません。
要らないってことも無いよね、と思いつつ。
パッケージ復元とビルドは、本記事記述時最新の2016年11月24日コミットの状態で、何事もなく通りました。
別環境でパッケージ復元にハマったことがありましたが、その際はNugetパッケージの管理
画面でプレリリースを含める
チェックボックスを入れて検索することで、無事にインストール出来ました。
README.md
上では/src/MusicStore/
のパスが散見されるので、これがメインプロジェクトなのでしょう。
実行すると。
例外ですねー...。
例外を解析する
詳細表示すると、InnerExceptionのStackTraceに発生位置がありました。
Models\SampleData.cs:行 26
とな。
該当箇所はこんな感じです。
EnsureCreateAsync
ですって。非同期で確実に生成するぜ、と。
その後に続くロジックが、InsertTestData
にCreateAdminUser
とのことですんで、どうやらDBインスタンスを新規作成してるようですね。
なにか設定ファイルにヒントが無いかと、プロジェクト内をみてみます。
config.json
というファイルに、DBの接続文字列っぽいのがありました。
中身はこちら
{ "AppSettings": { "SiteTitle": "ASP.NET MVC Music Store", "CacheDbResults": true }, "DefaultAdminUsername": "Administrator@test.com", "DefaultAdminPassword": "YouShouldChangeThisPassword1!", "Data": { "DefaultConnection": { // Use a shared (and running) LocalDB database when executing in IIS e.g. // "Server=(localdb)\\.\\IIS_DB;Database=MusicStore;Trusted_Connection=False;MultipleActiveResultSets=true;User ID=iis_login;Password=********" "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=MusicStore;Trusted_Connection=True;MultipleActiveResultSets=true;Connect Timeout=30;" } } }
どうも、ローカルのSQL Server上のMusicStore
というインスタンスに繋ごうとしてる?
お望みどおり(?)、SQL Serverを起動して、MusicStore
インスタンスを作ります。
インスタンスだけの状態で、テーブルもデータも空っぽです。
config.json
の接続文字列を書き換えて、ローカルSQL Serverに繋がるようにします。
{ "AppSettings": { "SiteTitle": "ASP.NET MVC Music Store", "CacheDbResults": true }, "DefaultAdminUsername": "Administrator@test.com", "DefaultAdminPassword": "YouShouldChangeThisPassword1!", "Data": { "DefaultConnection": { // Use a shared (and running) LocalDB database when executing in IIS e.g. // "Server=(localdb)\\.\\IIS_DB;Database=MusicStore;Trusted_Connection=False;MultipleActiveResultSets=true;User ID=iis_login;Password=********" "ConnectionString": "Server=localhost;Database=MusicStore;Trusted_Connection=True;MultipleActiveResultSets=true;Connect Timeout=30;User ID=[ユーザーID];Password=[パスワード]" } } }
jsonなのに、コメントアウト出来るんですね。
便利だけど、いいのかなMSさん...(困惑)
無事に動いた!
あらためて、Visual Studioから実行すると...
きました!
トップにMen at Work
を持ってくるあたり、趣味が合いそうです。
ユーザー登録やログイン、カート処理など、一通り動くようです。
今後はこのソースを研究しようと思います!