Entity Framework Core 2.0の新機能を使おう
進化した「ASP.NET Core 2.0」新しいWeb開発手法を学ぶ 第6回
画面の実装(2)
ブログ一覧画面の表示
ここまで実装が完了したら、アプリケーションを起動してみましょう。起動完了後、ブラウザから画面を表示して左側のナビゲーションメニューから「Blogs」を選択します。すると、データベースに登録したブログのデータが一覧表示されたかと思います。
続いて、検索フォームから作者名でブログの検索をしてみます。フォームに作者名(筆者の場合「akiba」)を入力して検索ボタンをクリックします。すると、以下の図のように一覧には指定した作者のブログのみが表示されるようになりました。
ここで、アプリケーションを起動したコンソールに出力されているログを確認してみると、「select * from blog where author = @p0」といったSQL文が出力されているかと思います。「@p0」は、Entity Frameworkが生成したパラメータ(スカラー変数)です。
BlogコントローラーのFindByAuthorメソッドで文字列補間を使用している「{author}」という箇所が、「@p0」というスカラー変数に置き換わっていることが分かります。このSQLは、以下のリストのようにSELECT文の手前でDECLARE文を使ってスカラー変数に値を代入することで、sqlcmdなどのSQLクライアントツールからもこのSELECT文を実行して結果を確認することができます。
$ 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」と入力した場合に、表示される記事一覧の結果が変わるかと思います。
こちらもコンソールに出力された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アプリケーションのデプロイや監視といった運用面の機能について紹介していきます。
参考資料
この記事は参考になりましたか?
既に会員の方はを行ってください。
- 進化した「ASP.NET Core 2.0」新しいWeb開発手法を学ぶ連載記事一覧
-
- ASP.NET Core 2.0アプリケーションをデプロイしてみよう
- Entity Framework Core 2.0の新機能を使おう
- ASP.NET Core 2.0からデータベースアクセスをしよう
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、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本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 秋葉 龍一(アキバ リュウイチ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
