実現したいこと
C#でDapperとNpgsqlを使用しています。
フォームクラス内にクエリを直書きするべきか、クエリ専用クラスを作るべきか悩んでいます。
どちらがよいのでしょうか。
フォームにクエリを直書きした例とクエリ用クラスを作った例
※いずれも、DyanmicParametersへのAdd処理は省略していますが、実際には使います。
フォームクラスにクエリ直書きした例
//登録フォームにSQLを直書きする場合 public class RegisterForm : Form { public int INSERTInfo() { //パラメータ追加処理省略 dapperConnection.Execute("INSERT・・・",パラメーター類(フォームで入力された値等)); //直書き } } public class DapperConnection { public IEnumerable<UserInfo> Query<UserInfo>(string sql, DynamicParameters params) { return npgsqlConnection.Query<UserInfo>(sql, params); } public int Execute(string sql, DynamicParameters params) { return npgsqlConnection.Execute(sql); } }
クエリ用クラスを作った例
public class Info { public string Name{get;set;} public string Address{get;set;} } public class RegisterForm : Form { public int INSERTInfo() { var info = new Info() { Name = "", Address = "" }; new RegisterFormsQueries().InsertInfo(info); } } //登録フォームでしか使わないクエリだけを集めたクラス public class RegisterFormQueries { public int InsertInfo(Info info) { return dapperConnection.Execute("INSERT・・・", パラメーター(infoクラスが持つプロパティ)); } public int UpdateInfo(Info info) { return dapperConnection.Execute("UPDATE・・・",パラメーター(infoクラスが持つプロパティ)); } } public class DapperConnection { public IEnumerable<UserInfo> Query<UserInfo>(string sql, DynamicParameters params) { return npgsqlConnection.Query<UserInfo>(sql, params); } public int Execute(string sql, DynamicParameters params) { return npgsqlConnection.Execute(sql); } }
あなたの回答
tips
プレビュー