当前位置:编程学习 > C#/ASP.NET >>

.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;
        }
    }
}


业务逻辑层

namespace Bll
{
    public class ADMIN_LIST
    {
        public static void axx()
        {
            Dal.ADMIN_LIST AdminList = new Dal.ADMIN_LIST();
            AdminList.axx();
        }
    }
}
--------------------编程问答-------------------- 上面写错了,帖子不能编辑,败家的csdn。
上面依据我是想说:
“如果按2楼说的bll调用basedal,那dal被basedal调用?怎么算面向抽象,怎么算面向细节?”
basedal是父类,dal是子类,basedal里无法调用dal的内容吧? --------------------编程问答--------------------
引用 4 楼 emusnake 的回复:
上面写错了,帖子不能编辑,败家的csdn。
上面依据我是想说:
“如果按2楼说的bll调用basedal,那dal被basedal调用?怎么算面向抽象,怎么算面向细节?”
basedal是父类,dal是子类,basedal里无法调用dal的内容吧?

2L没说错。是你理解错了 --------------------编程问答-------------------- 如果细节弄不清楚的话,先减少静态函数,调用起来虽然简单;静态函数太多影响软件性能。 --------------------编程问答--------------------
引用 5 楼 qq369553203 的回复:
引用 4 楼 emusnake 的回复:上面写错了,帖子不能编辑,败家的csdn。
上面依据我是想说:
“如果按2楼说的bll调用basedal,那dal被basedal调用?怎么算面向抽象,怎么算面向细节?”
basedal是父类,dal是子类,basedal里无法调用dal的内容吧?
2L没说错。是你理解错了

我还是理解不了,我的dal和BaseDal都是具体实现吧?
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,