(正確には学生登録システム)から情報を取得するための非常に大規模なデータベースを持つアプリケーションを作成しています。データベースは、必要に応じてMicrosoft SQL Serverで作成されます。これにMVCパターンを実装する予定ですが、データベースへのアクセスを処理する方法がわかりません。
それがどのように機能するかについての私の現在の理解はこれです(それを行うより良い方法があれば私を修正してください):
2つの質問があると思います。まず、MVCパターンがデータ駆動型アプリケーションでどのように機能するかを理解しています。次に、データベースからデータを取得してモデルをインスタンス化するためのコードはどこにあるのでしょうか。上記のモデルのコントローラーに入っていますか?他の静的クラスに入りますか?モデルのコンストラクタですか?
実際には_Data Access Layer
_を作成する必要があります:
1-新しいクラスライブラリを作成する_[ProjectName].DataAccess
_
2- UserManager
という名前のクラスを作成します。
3-引数としてユーザーモデルを取るAddUser
というメソッドを作成します。そのメソッド内で、ユーザーをデータベースに挿入するロジックを記述します。
システムのスケールによっては、データアクセスレイヤー(SQLまたはOracleなど)の1つを呼び出すために、コントローラーで使用する_Bussiness Layer
_(クラスライブラリ)を作成することができます。その複雑さに達した場合は、(AddUser、GetUser、DeleteUser)を使用してインターフェイスを作成し、そのインターフェイスのSQLとOracleクラスの両方の実装を提供して、構成から1つを選択する必要がある場合があります。
詳細が必要な場合はお知らせください。
コメントの後に編集:
GetUsers()
とGetUserByID(int id)
を使用するか、Name
を使用します。それはすべて、UIに必要なものとユーザーに提供する機能に依存します。
ただし、データベースからすべてのデータをクエリしてから、ユーザーがコードを介して要求したものをフィルタリングするのではなく、データベースから必要なデータのみをクエリする必要があります。UIに完全なリストを表示してから検索機能を提供しない限り、画面上
データベースから完全なテーブルをプルするかどうかは、実行する前に考慮する必要があります。実際のアプリケーションでは、テーブルのサイズを考慮する必要があります。巨大なものがある場合は、いくつかの操作が必要になる場合がありますプレフィルタリング(エンドユーザーが部門を選択する場合など)。 GetUsersByDepartment(int depId)
)を呼び出します。とにかく、エンドユーザーがアプリの画面から要求した場合、すべてのユーザーにクエリを実行するオプションを使用できますが、データがプルされるまで待機する必要がある場合があります。これらのメソッドはすべて_Data Access Layer
_に含まれているはずですが、今は_Business Layer
_がない場合を考慮してください。