0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VB.net on ASP.net MVC でCRUD実装(備忘録)

Last updated at Posted at 2021-04-08

やること

以下の環境で簡単なCRUDアプリ(Web)を作る

  • フレームワーク:ASP.net MVC
  • 言語:VB.net
  • 開発環境:Visual Studio Community 2019
  • OS:Windows 10

※細かなバージョン等は割愛します

経緯

仕事で上記環境の案件に関わることになりまして、ASP.net MVCは未経験だったので少し触ってみようと思いました。
とりあえず簡単なCRUDアプリを作ってみようと思いネットで情報を探してみたのですが、言語はC#を使う例がほとんどでVB.netの解説はあまり見つかりませんでした。(最近はC#が主流のようですね・・・)
案件が始まってから困らないように、開発の流れを自分用にまとめておきます。

流れ

  1. 新規プロジェクト作成
  2. Modelの作成
  3. Controller、Viewの作成(Entity Frameworkで自動生成)

Modelは手動で作る必要があるようですが、Entity Frameworkという機能(?)を使うと、CRUD機能が実装されたControllerとViewが自動生成されます。
Entity FrameworkはRailsのActiveRecordのようなもので、SQLを使わなくてもデータベース操作ができるようになっています。

実際にやってみた

1. 新規プロジェクト作成

Visual Studioを開き「新しいプロジェクトの作成」
image.png

テンプレート一覧から「ASP.NET Web アプリケーション(.NET Framework)」を選択
image.png

プロジェクト名を入力し作成
image.png

一覧から「MVC」を選択
image.png

2. Modelの作成

今回はCRUD操作の対象を「Item」とします。よってItemテーブルが必要となりますが、それはこの後登場するエンティティ、コンテキストクラスを作成すれば自動生成されます。

エンティティの作成

エンティティはテーブルと紐づくクラスで、これに対して操作することでCRUD処理ができるようです。
今回は「Itemクラス」を作成します。

画面右側のツリーのModelsを右クリックし、追加>新しい項目
image.png

Visual Basicから「クラス」を選択
image.png

Modelフォルダの中にClass1.vbというクラスファイルが作成されますが、今回は「Item.vb」にファイル名を変更します。

今回はItemテーブルのカラムにName、Weightを設定しようと思います。そのためには、ItemクラスにName、Weightプロパティを記述します。

Item.vb
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を右クリックし、追加>新しい項目
image.png

「ADO.NET Entity Data Model」を選択
image.png

「空のCode Firstモデル」を選択
image.png

モデルフォルダの中に、Model1.vbというファイルが作成されます。
今回はファイル名を「ItemContext.vb」に変更しました。

このItemContextクラスの中に、先ほど作成したItemクラスと紐づけるための記述を追加します。
また、ファイル名修正前のModel1の記述をItemContextに修正します。

ItemContext.vb
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への接続情報で、コンテキストクラスを作成した際に自動生成されるようです。

Web.config
  <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を右クリックし、追加>コントローラー

image.png

「Entity Frameworkを使用した、ビューがあるMVC 5コントローラー」を選択
image.png

モデルクラスに「Item」、データコンテキストクラスに「ItemContext」を選択。コントローラ名は「ItemsController」とする。(デフォルトで入力済み)
image.png

※ここでエラーが発生する場合、一度ビルドしてから再度実施すると上手くいくかもしれません

アプリ起動

これで完成です。アプリを起動すると以下のような画面が立ち上がります。
image.png

詳細は割愛しますが、画面に従い操作すればCRUD操作ができるようになっています。
このように簡単な手順でCRUDアプリを作ることができました。先述のようにASP.net MVCでVB.netを使う場合情報があまり多くないですが、生成されたソースコードを読み解けば見えてくるものがあるかもしれません・・・

最後に

いろんな情報を寄せ集めて実装したので、もっと効率が良いやり方、正しいやり方があるのかもしれません。
あくまでも備忘録なので参考までに・・・

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?