やること
以下の環境で簡単なCRUDアプリ(Web)を作る
- フレームワーク:ASP.net MVC
- 言語:VB.net
- 開発環境:Visual Studio Community 2019
- OS:Windows 10
※細かなバージョン等は割愛します
経緯
仕事で上記環境の案件に関わることになりまして、ASP.net MVCは未経験だったので少し触ってみようと思いました。
とりあえず簡単なCRUDアプリを作ってみようと思いネットで情報を探してみたのですが、言語はC#を使う例がほとんどでVB.netの解説はあまり見つかりませんでした。(最近はC#が主流のようですね・・・)
案件が始まってから困らないように、開発の流れを自分用にまとめておきます。
流れ
- 新規プロジェクト作成
- Modelの作成
- Controller、Viewの作成(Entity Frameworkで自動生成)
Modelは手動で作る必要があるようですが、Entity Frameworkという機能(?)を使うと、CRUD機能が実装されたControllerとViewが自動生成されます。
Entity FrameworkはRailsのActiveRecordのようなもので、SQLを使わなくてもデータベース操作ができるようになっています。
実際にやってみた
1. 新規プロジェクト作成
Visual Studioを開き「新しいプロジェクトの作成」
テンプレート一覧から「ASP.NET Web アプリケーション(.NET Framework)」を選択
2. Modelの作成
今回はCRUD操作の対象を「Item」とします。よってItemテーブルが必要となりますが、それはこの後登場するエンティティ、コンテキストクラスを作成すれば自動生成されます。
エンティティの作成
エンティティはテーブルと紐づくクラスで、これに対して操作することでCRUD処理ができるようです。
今回は「Itemクラス」を作成します。
画面右側のツリーのModelsを右クリックし、追加>新しい項目
Modelフォルダの中にClass1.vbというクラスファイルが作成されますが、今回は「Item.vb」にファイル名を変更します。
今回はItemテーブルのカラムにName、Weightを設定しようと思います。そのためには、ItemクラスにName、Weightプロパティを記述します。
Public Class Item
Public Property Id As Integer
Public Property Name As String
Public Property weight As Integer
End Class
コンテキストクラスの作成
コンテキストクラスは、エンティティをDBにつなぐためのクラスとなるようです。先ほどエンティティに対して操作するとCRUD処理ができると書きましたが、実際はコンテキストクラスを通して操作します。
Railsではこの機能はModelに含まれていたので必要なかったと思いますが、ASP.net MVCでは分かれているようです。JavaでいうところのRepositoryのようなものかもしれません。
画面右側のツリーのModelsを右クリックし、追加>新しい項目
「ADO.NET Entity Data Model」を選択
モデルフォルダの中に、Model1.vbというファイルが作成されます。
今回はファイル名を「ItemContext.vb」に変更しました。
このItemContextクラスの中に、先ほど作成したItemクラスと紐づけるための記述を追加します。
また、ファイル名修正前のModel1の記述をItemContextに修正します。
Imports System
Imports System.Data.Entity
Imports System.Linq
Public Class ItemContext
Inherits DbContext
~省略~
Public Sub New()
MyBase.New("name=ItemContext") '★この行を修正
End Sub
~省略~
Public Property Items As DbSet(Of Item) '★この行を追加
End Class
~省略~
また、ツリーからWeb.configというファイルを開き、connectionStringsの「Model1.vb」を「ItemContext.vb」に変更します。(2ヵ所あると思います)
これはDBへの接続情報で、コンテキストクラスを作成した際に自動生成されるようです。
<connectionStrings>
<add name="ItemContext" connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=CrudApplication.ItemContext;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
3. Controller、Viewの作成
先述の通り、Entity Frameworkを使うとCRUD機能が実装されたControllerとViewが自動生成されます。
画面右側のツリーのControllersを右クリックし、追加>コントローラー
「Entity Frameworkを使用した、ビューがあるMVC 5コントローラー」を選択
モデルクラスに「Item」、データコンテキストクラスに「ItemContext」を選択。コントローラ名は「ItemsController」とする。(デフォルトで入力済み)
※ここでエラーが発生する場合、一度ビルドしてから再度実施すると上手くいくかもしれません
アプリ起動
これで完成です。アプリを起動すると以下のような画面が立ち上がります。
詳細は割愛しますが、画面に従い操作すればCRUD操作ができるようになっています。
このように簡単な手順でCRUDアプリを作ることができました。先述のようにASP.net MVCでVB.netを使う場合情報があまり多くないですが、生成されたソースコードを読み解けば見えてくるものがあるかもしれません・・・
最後に
いろんな情報を寄せ集めて実装したので、もっと効率が良いやり方、正しいやり方があるのかもしれません。
あくまでも備忘録なので参考までに・・・
参考リンク