数据层使用DBHelper.dll来减少工作量

        目前在需求确定了以后进行开发的步骤一般是这样的:建立数据表,建立model,构建数据操作层,最后在页面中进行调用。关于数据操作层,因为大量的操作都集中在增加、更新、删除等简易操作,而我之前的写法是每次建立model的时候就写一遍这样的方法,并且为Model中的字段赋值,而这花费了我大量的精力,于是我想找个方法,有没有能够在建立model以后自动识别数据库字段而进行增加、更新、删除等这些常用的基本方法呢?于是我找到了DBHelper.dll。目前这个组件在百度都可以进行下载。

        首先先看一下我先前进行的数据库操作方法:

 public int Add(wymodel.WY_WapChannel model)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("insert into wy_wapchannel (");
            strSql.Append("title,wapid,state,orderid)");
            strSql.Append(" values(");
            strSql.Append("@title,@wapid,@state,@orderid)");
            strSql.Append(";select scope_identity();");
            SqlParameter[] parameters ={
                        new SqlParameter("@title",SqlDbType.VarChar,200),
                        new SqlParameter("@wapid",SqlDbType.Int),
                        new SqlParameter("@state",SqlDbType.Int),
                        new SqlParameter("@orderid",SqlDbType.Int)
                                      };
            parameters[0].Value = model.Title;
            parameters[1].Value = model.WapId;
            parameters[2].Value = model.State;
            parameters[3].Value = model.OrderId;

            object obj = SQLHelper.GetSingle(strSql.ToString(), parameters);
            if (obj == null)
                return 0;
            else
                return Convert.ToInt32(obj);
        }

  以上是我的插入语句,在这里我需要将model进行数据操作,进行赋值。而一旦我数据库中新增一个字段或者删除一个字段,这些语句和参数都需要进行修改,并且不仅插入语句需要修改,更新等其他语句都可能需要修改,灵活性不高。

      现在,我引入了DBHelper.dll组件,并使用其自带方法进行数据库连接:

public static class DBF
    {
        public static readonly DBHelper.DBFactory dbWeiyun;

        static DBF()
        {
            dbWeiyun = new DBHelper.DBFactory(System.Configuration.ConfigurationManager.ConnectionStrings["WyConn"].ConnectionString);
        }
    }

  这里"WyConn"是在我的webconfig配置页面里面进行数据库连接的一个参数,通过此组件自带的DBFactory方法可以便利的进行不同数据库的连接操作。

      完成了这一步以后,我就要将建好的model跟数据库进行映射了:

public class TableMappings
    {
        static TableMappings()
        {
            InitWeiyun();
        }
        public static DBHelper.TableMapping WY_BusinessActivity { get; private set; }
        public static DBHelper.TableMapping WY_ShopGoods { get; private set; }
        public static DBHelper.TableMapping WY_GoodsComment { get; private set; }
        private static void InitWeiyun()
        {
            WY_BusinessActivity = new DBHelper.TableMapping(DBF.dbWeiyun, "[WY_BusinessActivity]");
            WY_ShopGoods = new DBHelper.TableMapping(DBF.dbWeiyun, "[WY_ShopGoods]");
            WY_GoodsComment = new DBHelper.TableMapping(DBF.dbWeiyun, "[WY_GoodsComment]");
        } 
    }

  这里“[WY_BusinessActivity]”等均是数据库中的数据表。

      映射完成以后,我需要进行插入操作只需要将参数传入即可,直接调用组件中的insert方法。

 public bool insertComment(wymodel.WY_GoodsComment model)
        {
           return  wydal.TableMappings.WY_GoodsComment.Insert(model);
        }

  这里需要注意一点的就是,如果在Model里出现了数据库中没有的字段,要在字段前加上[ModelProperty(true)]来避免映射:

public int goodsId { set; get; }
        public int star { set; get; }
        public string Comment { set; get; }
        public string openID { set; get; }
        public DateTime intime { set; get; }
        /// <summary>
        /// 0商品评论,1活动评论,2跳蚤市场,3兼职
        /// </summary>
        public int Ctype { set; get; }
        /// <summary>
        /// 非数据库数据 头像
        /// </summary>
        [ModelProperty(true)]
        public string headimgurl { get; set; }
        /// <summary>
        /// 非数据库数据 昵称
        /// </summary>
        [ModelProperty(true)]
        public string nickname { get; set; }

  总之,这个组件能够帮助我们对数据库的操作进行简化,而不必浪费大量的精力进行重复的操作。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。