前提・実現したいこと
MVVMモデルでWindows Formsアプリを作る時、クエリをどこに書くべきかを教えて下さい。
以下のようなケースでは、どこにクエリを書くべきでしょうか?
//従業員を表すModel //m_tbl_employees public class EmployeeModel { public int Code { get; set; } public string Name { get; set; } public int DepartmentCode { get; set; } //外部キー }
//部署を表すModel //m_tbl_departments public class DepartmentModel { public int Code { get; set; } public string Name { get; set; } }
//従業員データ編集画面(EditForm)に表示するViewModel。 //Employee テーブルと Department テーブルを JOIN して取得したデータを格納 public class EditFormViewModel { public int EmployeeCode { get; set; } public string EmployeeName { get; set; } public int DepartmentCode { get; set;} public string DepartmentName { get; set; } }
//View public class EditForm : Form { //EditFormViewModel をバインドするDataGridView private DataGridView view = new DataGridView(); //クエリを実行するボタン private Button sendQueryButton; }
疑問点
SQL実行のタイミングは、以下の2つを想定して教えて下さい。
- EditForm の Load時、DBからSELECTして、DataGridViewにバインドする。
(EnployeeテーブルとDepartmentテーブルをJOINして、EditFormModel のインスタンス作成してバインド) - ボタンをクリックすると、DBにクエリを送信する。
普通はクエリはモデルクラスに書くべきだそうですが、その場合は、
上記のクラス構成だと、どのクラスにどのように(インスタンスメソッドかstaticメソッドか)書くべきでしょうか?