我的 asp.net 项目基于三层架构。
(数据访问层)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 中构建的,这就是为什么我开发了将 sql 查询保留在 BLL 中的项目,但现在我觉得我应该将它们移至 DAL。
所以我的问题是
- 是否可以将 sql 查询保留在 BLL 中,或者我应该将它们移至 DAL?
- 可以使用数据表在层之间移动数据还是我应该使用 DTO?