.net数据库编程中,这样继承不知道是否合适。
我想自己写一个框架,且算是框架吧,我对这些概念不是很清楚,我的想法如下:
在BaseDal中,用程序生成对数据库的基本操作,主要是sql的增、删、改,
Dal中,继承BaseDal,用以实现事务,多表查询等内容,
Bll中,调用Dal,实现逻辑层。
BaseDal和Dal都算是数据库操作层,但是BaseDal中的代码是程序生成的,为了将来在修改数据库表结构后修改方便,所以采用了Dal继承BaseDal,BaseDal可以直接覆盖,Dal根据实际情况手动调整。
我对继承的把握不是很熟,对与我这个想法,不知道高手有什么看法,有什么吐槽的尽管来。 --------------------编程问答-------------------- 图可能画的有点问题,Dal是BaseDal的派生类, --------------------编程问答-------------------- bll应该调用 basedal 而不是具体实现 也就是说 依赖倒转,
应该面向抽象编程,而不是面向细节 --------------------编程问答--------------------
我把图重新改了一下,
如果按2楼说的bll调用basedal,那dal被dal调用?怎么算面向抽象,怎么算面向细节?
可能是我没有说清楚basedal我也写成具体实现了。
我还是贴一段代码比较清楚。
基类 DalBase:
namespace DalBase
{
public class ADMIN_LIST
{
protected IDataAccess da = null;
public ADMIN_LIST()
{ da = DataAccessFactory.CreateDataAccess(); }
public int Delete(int ADMIN_LIST_ID)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("delete from ADMIN_LIST");
strSql.Append(" where ADMIN_LIST_ID=:ADMIN_LIST_ID");
OracleParameter[] parameters = {
new OracleParameter("ADMIN_LIST_ID", OracleType.Number),
};
parameters[0].Value = ADMIN_LIST_ID;
return da.ExecuteNonQuery(strSql.ToString(), parameters);
}
}
}
DalBase派生类 Dal
namespace Dal
{
public class ADMIN_LIST:DalBase.ADMIN_LIST
{
public DataSet axx()
{
string sql = "select * from admin_list";
DataSet ds = base.PageView(sql);
base.CloseDataAccess();
return ds;
}
}
}
业务逻辑层
--------------------编程问答-------------------- 上面写错了,帖子不能编辑,败家的csdn。
namespace Bll
{
public class ADMIN_LIST
{
public static void axx()
{
Dal.ADMIN_LIST AdminList = new Dal.ADMIN_LIST();
AdminList.axx();
}
}
}
上面依据我是想说:
“如果按2楼说的bll调用basedal,那dal被basedal调用?怎么算面向抽象,怎么算面向细节?”
basedal是父类,dal是子类,basedal里无法调用dal的内容吧? --------------------编程问答--------------------
2L没说错。是你理解错了 --------------------编程问答-------------------- 如果细节弄不清楚的话,先减少静态函数,调用起来虽然简单;静态函数太多影响软件性能。 --------------------编程问答--------------------
我还是理解不了,我的dal和BaseDal都是具体实现吧?
补充:.NET技术 , ASP.NET