我的asp.net项目基于三层架构。
(数据访问层)DAL - (类库)
我已将所有查询放在(Business Logic Layer) BLL类中(所有BLL类都在单独的类库项目中),例如EmployeeBLL。
(数据访问层)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();
}
我已将所有查询放在(Business Logic Layer) 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中?
- 在层之间传输数据时,使用Datatables可以吗?还是应该使用DTO?