Example #1
0
        internal ObModelInfo SelectById(long obId)
        {
            //初始化
            ObModelInfo om = new ObModelInfo();
            IDbHandler dbh = om.CreateHandler();    //创建数据库操作句柄接口
            //设置返回的实体字段,相当于EF的Select字段
            dbh.SetFields(om.Fields);   //om.Fields为所有字段
            //dbh.SetFields(om.ObId, om.ObName, om.ObEnabled);    //自定义返回的实体字段

            //组装Where条件语句
            dbh.Where(om.ObId.Equals(obId));

            //执行查询
            DataReader dr = dbh.Select();

            //获取结果集方法一(自动关闭读取器)
            om = dr.ReadFirst<ObModelInfo>();

            //获取结果集方法二(手动关闭读取器,更灵活)
            /*
            if (dr.Read())
            {
                dr.ReadTo(om);
            }
            else
            {
                om = null;
            }
            dr.Close();
            */

            return om;
        }
Example #2
0
        internal ObModelInfo SelectByName(string obName)
        {
            ObModelInfo om = new ObModelInfo();
            IDbHandler dbh = om.CreateHandler();
            dbh.SetFields(om.Fields);

            dbh.Where(om.ObName.Like(obName));

            DataReader dr = dbh.Select();
            om = dr.ReadFirst<ObModelInfo>();

            return om;
        }
Example #3
0
        internal ObModelInfo SelectByUserId(long obId,long userId)
        {
            ObModelInfo om = new ObModelInfo();
            IDbHandler dbh = om.CreateHandler();
            dbh.SetFields(om.Fields);

            dbh.Where(om.ObId.Equals(obId));
            dbh.Where(om.UserId.Equals(userId));

            DataReader dr = dbh.Select();
            om = dr.ReadFirst<ObModelInfo>();

            return om;
        }
Example #4
0
        internal List<ObModelInfo> SelectList(ObModelQuery query, out ListAttrInfo listAttr)
        {
            //初始化
            ObModelInfo om = new ObModelInfo();
            IDbHandler dbh = om.CreateHandler();    //创建数据库操作句柄接口
            dbh.SetFields(om.Fields);   //设置返回的实体字段

            //[BEGIN]::组装Where条件语句
            //组装日期时间条件
            string startTime;   //开始时间
            string endTime;     //结束时间
            string dtFormat = "yyyy-MM-dd HH:mm:ss";
            if (!query.StartTime.IsNull && (!query.StartTime.IsMinValue))
            {
                startTime = query.StartTime.Value.ToString(dtFormat);
                dbh.Where(om.ObCreated.Compare(">=", startTime));
            }
            if (!query.EndTime.IsNull && (!query.EndTime.IsMinValue))
            {
                endTime = query.EndTime.Value.ToString(dtFormat);
                dbh.Where(om.ObCreated.Compare("<=", endTime));
            }
            //组装记录ID串条件
            if(!query.Ids.IsNull && query.Ids.Count > 0)
            {
                dbh.Where(om.ObId.In(query.Ids.Value));
            }
            //组装关键字条件
            if(!query.Keyword.IsNullOrWhiteSpace)
            {
                dbh.Where(om.ObName.Like(query.Keyword.Value));
            }
            //组装复合条件(如果需要)
            /*
            if (!query.Keyword.IsNullOrWhiteSpace)
            {
                string keyword = query.Keyword.Value;
                CompoundCondition ccd = new CompoundCondition();    //复合条件类
                ccd.And(om.ObName.Like(keyword))
                    .Or(om.ObDescri.Like(keyword));
                dbh.Where(ccd);
            }
            */

            //
            if(!query.Level.IsNull)
            {
                dbh.Where(om.ObLevel.Equals(query.Level));
            }
            //组装记录状态条件
            if(!query.Enabled.IsNull)
            {
                dbh.Where(om.ObEnabled.Equals(query.Enabled.Value));
            }

            //组装JOIN条件
            if (!query.GetRelation.IsTrue())
            {
                ObRelationInfo ori = new ObRelationInfo();
                dbh.SetFields(ori.Fields);  //设置返回的关联实体字段
                dbh.Join(ori).On(om.ObId.Equals(ori.ObId)); //关联条件
            }

            //组装排序条件(放在Where子句最后,分页时,必须有OrderBy)
            if(!query.OrderBy.IsNull && query.OrderBy.Count>0)
            {
                OrderInfo[] oiArray = query.OrderBy.GetArray();
                //拼装的order by条件,case条件字段值需要和ObModelQuery查询实体的OrderByFields属性一致
                foreach (OrderInfo oi in oiArray)
                {
                    switch (oi.FieldAlias)
                    {
                        case "obLevel":
                            dbh.OrderBy(om.ObLevel, oi.OrderType);
                            break;
                        case "obName":
                            dbh.OrderBy(om.ObName, oi.OrderType);
                            break;
                        case "obEnabled":
                            dbh.OrderBy(om.ObEnabled, oi.OrderType);
                            break;
                        case "obMoney":
                            dbh.OrderBy(om.ObMoney, oi.OrderType);
                            break;
                        case "obScore":
                            dbh.OrderBy(om.ObScore, oi.OrderType);
                            break;
                        case "obCreated":
                            dbh.OrderBy(om.ObCreated, oi.OrderType);
                            break;
                        case "obId":
                        default:
                            dbh.OrderBy(om.ObId, oi.OrderType);
                            break;
                    }
                }
            }
            else
            {
                //默认排序条件
                dbh.OrderBy(om.ObId, OrderType.DESC);
            }

            //[END]::组装Where条件语句

            List<ObModelInfo> list = new List<ObModelInfo>();
            DataReader dr = dbh.Select(query, out listAttr);
            //获取结果集方法一(自动关闭读取器)
            list = dr.ReadList<ObModelInfo>();

            //获取结果集方法二(手动关闭读取器,更灵活)

            while (dr.Read())
            {
                ObModelInfo ei = new ObModelInfo();
                dr.ReadTo(ei);
                list.Add(ei);
            }
            dr.Close();

            return list;
        }
Example #5
0
        /// <summary>
        /// 验证请求实体参数
        /// 一般用于新增实体
        /// </summary>
        /// <param name="om"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        private bool Verify(ObModelInfo om, out string msg)
        {
            if (om.ObName.IsNullOrWhiteSpace)
            {
                msg = "ObName不能为空";
                return false;
            }

            msg = "";
            return true;
        }
Example #6
0
        /// <summary>
        /// 更新实体方法(用户相关)
        /// 1.判断是否管理员
        /// 2.判断记录是否属于当前用户
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="user"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public ObModelInfo UpdateEntity(ObModelInfo entity, YsMemberInfo user, out string msg)
        {
            ObModelInfo ei = null;
            try
            {
                //判断参数中是否有记录ID
                if (entity.ObId.IsNull)
                {
                    msg = "obId不能为空";
                    return null;
                }
                //判断是否存在ID对应的记录
                ObModelDA da = new ObModelDA();
                ei = da.SelectById(entity.ObId.Value);  //根据ID获取记录
                //ei = OModel.GetByPk<ObModelInfo>(entity.ObId.Value); //或者:根据主键获取记录
                if (ei != null)
                {
                    msg = "记录不存在";
                    return null;
                }

                //判断是否有操作权限(管理员或用户本人)
                if (user != null
                    && (!user.UserId.IsNull)
                    && (!ei.UserId.IsNull))
                {
                    if (user.AccountType.Value != Oak.Model.AccountType.Admin)  //非管理员
                    {
                        if (user.UserId.Value != ei.UserId.Value)
                        {
                            msg = VERIFY_ERROR;
                            return null;
                        }
                    }
                }
                else
                {
                    msg = VERIFY_ERROR;
                    return null;
                }

                //设置需要更新的属性值(注意与添加的代码进行区分)
                ei.ResetAssigned();

                if (!entity.ObDescri.IsNullOrWhiteSpace)
                    ei.ObDescri.Set(entity.ObDescri.Value);
                if (!entity.ObEnabled.IsNull)
                    ei.ObEnabled.Set(entity.ObEnabled.Value);
                if (!entity.ObLevel.IsNull)
                    ei.ObLevel.Set(entity.ObLevel.Value);
                if (!entity.ObMoney.IsNull)
                    ei.ObMoney.Set(entity.ObMoney.Value);
                if (!entity.ObScore.IsNull)
                    ei.ObScore.Set(entity.ObScore.Value);

                if (!ei.Update())  //保存实体(更新记录)
                {
                    msg = "更新" + ENTITY_STR + "失败";
                    return null;
                }
            }
            catch (Exception ex)
            {
                msg = "更新" + ENTITY_STR + "异常";
                Logger.Error(ex, msg);
                return null;
            }
            msg = "";
            return ei;
        }
Example #7
0
        /// <summary>
        /// 更新实体方法(用户无关)
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public ObModelInfo UpdateEntity(ObModelInfo entity, out string msg)
        {
            ObModelInfo ei = null;
            try
            {
                //判断参数中是否有记录ID
                if (entity.ObId.IsNull)
                {
                    msg = "obId不能为空";
                    return null;
                }
                //判断是否存在ID对应的记录
                ObModelDA da = new ObModelDA();
                ei = da.SelectById(entity.ObId.Value);  //根据ID获取记录
                //ei = Obsidian.Edm.OModel.GetByPk<ObModelInfo>(entity.ObId.Value); //或者:根据主键获取记录
                if (ei != null)
                {
                    msg = "记录不存在";
                    return null;
                }
                //设置需要更新的属性值(注意与添加的代码进行区分)
                ei.ResetAssigned();

                if (!entity.ObDescri.IsNullOrWhiteSpace)
                    ei.ObDescri.Set(entity.ObDescri.Value);
                if (!entity.ObEnabled.IsNull)
                    ei.ObEnabled.Set(entity.ObEnabled.Value);
                if (!entity.ObLevel.IsNull)
                    ei.ObLevel.Set(entity.ObLevel.Value);
                if (!entity.ObMoney.IsNull)
                    ei.ObMoney.Set(entity.ObMoney.Value);
                if (!entity.ObScore.IsNull)
                    ei.ObScore.Set(entity.ObScore.Value);

                if (!ei.Update())  //保存实体(更新记录)
                {
                    msg = "更新" + ENTITY_STR + "失败";
                    return null;
                }
            }
            catch (Exception ex)
            {
                msg = "更新" + ENTITY_STR + "异常";
                Logger.Error(ex, msg);
                return null;
            }
            msg = "";
            return ei;
        }
Example #8
0
        /// <summary>
        /// 添加实体方法
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public ObModelInfo AddEntity(ObModelInfo entity, out string msg)
        {
            ObModelInfo ei = null;
            try
            {
                //验证必要的属性值
                if (!Verify(entity, out msg))
                {
                    return null;
                }
                //判断是否已存在(如同名)
                /* 对于同一userId只能有一条记录的情况
                 * 在DA类增加 SelectByUserId(entity.UserId.Value) 方法,然后进行判断即可
                 *
                */
                ObModelDA da = new ObModelDA();
                ei = da.SelectByName(entity.ObName.Value);
                if (ei != null)
                {
                    msg = "obName已存在";
                    return null;
                }

                //设置必要的空值属性初始值(对于数据库表字段要求 NOT NULL 的都必须设置)
                ei = entity;
                if (entity.ObDescri.IsNullOrWhiteSpace)
                    ei.ObDescri.Set("");
                if (entity.ObEnabled.IsNull)
                    ei.ObEnabled.Set(false);
                if (entity.ObLevel.IsNull || entity.ObLevel.Value < 0)
                    ei.ObLevel.Set(0);
                if (entity.ObMoney.IsNull || entity.ObMoney.Value < 0.0m)
                    ei.ObMoney.Set(0.0m);
                if (entity.ObScore.IsNull || entity.ObScore.Value < 0.0d)
                    ei.ObScore.Set(60.0d);
                ei.ObCreated.Now(); //设置当前日期时间
                ei.Save();  //保存实体(新增记录)
            }
            catch (Exception ex)
            {
                msg = "添加" + ENTITY_STR + "异常";
                Logger.Error(ex, msg);
                return null;
            }
            msg = "";
            return ei;
        }