SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

進化した「ASP.NET Core 2.0」新しいWeb開発手法を学ぶ

Entity Framework Core 2.0の新機能を使おう

進化した「ASP.NET Core 2.0」新しいWeb開発手法を学ぶ 第6回


  • X ポスト
  • このエントリーをはてなブックマークに追加

画面の実装(2)

ブログ一覧画面の表示

 ここまで実装が完了したら、アプリケーションを起動してみましょう。起動完了後、ブラウザから画面を表示して左側のナビゲーションメニューから「Blogs」を選択します。すると、データベースに登録したブログのデータが一覧表示されたかと思います。

図1 ブログ一覧画面
図1 ブログ一覧画面

 続いて、検索フォームから作者名でブログの検索をしてみます。フォームに作者名(筆者の場合「akiba」)を入力して検索ボタンをクリックします。すると、以下の図のように一覧には指定した作者のブログのみが表示されるようになりました。

図2 ブログの検索結果
図2 ブログの検索結果

 ここで、アプリケーションを起動したコンソールに出力されているログを確認してみると、「select * from blog where author = @p0」といったSQL文が出力されているかと思います。「@p0」は、Entity Frameworkが生成したパラメータ(スカラー変数)です。

 BlogコントローラーのFindByAuthorメソッドで文字列補間を使用している「{author}」という箇所が、「@p0」というスカラー変数に置き換わっていることが分かります。このSQLは、以下のリストのようにSELECT文の手前でDECLARE文を使ってスカラー変数に値を代入することで、sqlcmdなどのSQLクライアントツールからもこのSELECT文を実行して結果を確認することができます。

リスト9 ログに出力されたSQLをsqlcmdから実行する
$ sqlcmd -S localhost -U SA -P 'P@ssw0rd' -Q "\
DECLARE @p0 NVARCHAR(128) = 'akiba';\

-- sqlcmdでSQLを実行する際はテーブル名の前にスキーマ(efcore2.dbo.)を付与する
select * from efcore2.dbo.blog where author = @p0"

 このようにEntity Framework Core 2.0ではFromSqlメソッドで文字列補間を行う場合、スカラー変数でパラメータ化を行いSQLを実行していることが分かりました。

記事一覧画面の表示

 次に記事一覧画面に遷移してみましょう。ブログ一覧画面でいずれかのブログの行をクリックすると記事一覧画面に遷移することができます。記事一覧画面の検索フォームでは記事タイトルの前方一致検索を行うことができます。

 以下はフォームに「razor」と入力して検索した結果の画面です。同様に「spa」と入力した場合に、表示される記事一覧の結果が変わるかと思います。

図3 タイトルの前方一致検索結果
図3 タイトルの前方一致検索結果

 こちらもコンソールに出力されたSQLのログを確認してみましょう。

リスト10 ログに出力された前方一致検索のSQL
SELECT [post].[post_id], [post].[blog_id], [post].[created_date], [post].[delete_flg], [post].[post_detail], [post].[post_title]
FROM [post] AS [post]
WHERE [post].[post_title] LIKE @__title_1 + N'%';

 LIKE句が使われていることが分かるかと思います。LIKEに続く「@__title_1」というスカラー変数と「N'%'」という記号が結合されて、最終的に「LIKE 'タイトル名%'」という前方一致検索を行うSQL文を構築していきます。

おわりに

 前回と今回にわたってEntity Framework Core 2.0を使ったアプリケーションの構築方法と新機能の紹介をしました。ASP.NET Core 2.0と親和性の高いEntity Framework Core 2.0を使うことで、柔軟かつ簡潔にデータベースアクセスをするアプリケーションが作成できることが分かったかと思います。

 次回は、ASP.NET Core 2.0アプリケーションのデプロイや監視といった運用面の機能について紹介していきます。

参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
進化した「ASP.NET Core 2.0」新しいWeb開発手法を学ぶ連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 秋葉 龍一(アキバ リュウイチ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10789 2018/04/25 19:43

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング