私の asp.net プロジェクトは、3 層アーキテクチャに基づいています。
(データ アクセス層) DAL - (クラス ライブラリ)
private static string connString ="";
private static OracleConnection conn;
public static OracleConnection OpenConn()
{
if (conn==null)
{
conn = new OracleConnection(connString);
}
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
return conn;
}
public static DataTable Select(string query)
{
DataTable dt = new DataTable();
OracleDataAdapter da = new OracleDataAdapter(query, OpenConn());
da.Fill(dt);
return dt;
}
public static void Execute(string query)
{
OracleCommand cmd = new OracleCommand(query, OpenConn());
cmd.ExecuteNonQuery();
}
すべてのクエリを (ビジネス ロジック層) BLL クラスに入れました (すべての BLL クラスは別のクラス ライブラリ プロジェクトにあります)
例: EmployeeBLL
public static class EmployeeBLL
{
public static DataTable Employees()
{
DataTable dt = new DataTable();
string q = string.Format("select * from employees");
dt = OraDAL.Select(q);
return dt;
}
public static DataTable AddEmployee(string name)
{
DataTable dt = new DataTable();
string q = string.Format("INSERT INTO employees (ename) VALUES('{0}')", name);
dt = OraDAL.Select(q);
return dt;
}
}
SQL クエリが BLL で構築されている 3 層アーキテクチャに関するブログ記事をいくつか見たことがあります。そのため、SQL クエリを BLL に保持するプロジェクトを開発しましたが、今はそれらを DAL に移行する必要があると感じています。
だから私の質問は
- SQL クエリを BLL に保持しても問題ありませんか、それとも DAL に移動する必要がありますか?
- レイヤー間でデータを移動するためにデータテーブルを使用しても問題ありませんか、代わりに DTO を使用する必要がありますか?