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