你的浏览器还没开启 Javascript 功能!

ASP.NET Core MVC 階層化アーキテクチャ Chap4 (データアクセスオブジェクトを抜き出しModel層を作成する)

前回のコンテンツASP.NET Core MVC 階層化アーキテクチャ Chap3 (個別Repositoryで独自処理を実装する)までの内容は、Repositoryパターンを用いて、Controllerからデータアクセスのオブジェクトを分離することまで出来ました。

今回は新しくプロジェクト(Model層)を作成して、その中にデータアクセスのオブジェクトをまとめる作業を行います。

そうすることで、Web層とModel層の責務がハッキリ分離することができます。

  • Web層 : リクエスト処理とデータ表示
  • Model層 : データアクセス

前提

このコンテンツで扱うこと

  • dotnet cli で新規プロジェクトの作成&参照の設定

開発環境

環境/ソフトウェア内容
オペレーティングシステムWindows 10 1903
.NET Core SDK3.0.100
IDEVisual Studio Code 1.39.1
BrowserGoogle Chrome 78.0.3904.70

dotnet cli で新規プロジェクトの作成

ソリューションフォルダ配下にて以下のdotnetコマンドを実行してください。

# 新規プロジェクト作成(クラスライブラリ)
dotnet new classlib -f netstandard2.1 -n ds.NorthwindApp.Model

ds.NorthwindApp.Modelのフォルダ配下に移動して、以下のコマンドを実行します。

## Ef Coreのモジュール追加
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer

dotnet cli で参照の追加

再度ソリューションフォルダ配下に移動して、以下のコマンドを実行します。

## ソリューションにプロジェクトを追加
dotnet sln add ds.NorthwindApp.Model

## WebプロジェクトがModelプロジェクトを参照するように追加
dotnet add ds.NorthwindApp.Web/ds.NorthwindApp.Web.csproj reference ds.NorthwindApp.Model/ds.NorthwindApp.Model.csproj

データアクセスのオブジェクトの移動

WebプロジェクトのModels配下のクラスをすべてをModelプロジェクトに移動します。

2019-11-12-16-42-04.png

名前空間の置き換え

名前空間を書きどおりに置き換えを行います。

置き換え前置き換え後
ds.NorthwindApp.Web.Modelsds.NorthwindApp.Model

最後にプロジェクトをビルドして、動作確認を行います。

まとめ

通常、開発案件の初期段階でアーキテクチャ設計がすでに決まっています。
このように途中でプロジェクトを作成して、レイヤー分けをすることはあんまりしません。

また、プロジェクトは必ずしも分ける必要はありません。
システム規模が小さければ、フォルダをきちんと分ければそれだけでも十分です。

しかし、規模が少しでも大きくなるとオブジェクトの責務ごとに別々のプロジェクトに分けるようが構造がわかりやすいし、
メンテナンスもしやすいです。

備考

今回作成したソースコードです。

GitHubリポジトリ

では!!( `ー´)ノ