/// <summary> /// 按完整查询条件更新 /// </summary> /// <param name="query"></param> /// <param name="updateValue">要按字段值更新,需加前辍$ 如 c["UserId"] = "$UserId"</param> /// <returns></returns> public int Update(ILambdaQuery <T> query, Dictionary <string, object> updateValue) { var db = DBExtend; var c = new ParameCollection(updateValue); return(db.Update(query, c)); }
/// <summary> /// 使用封装的参数进行分页 /// Fields(string),Sortfield(string),SortType(bool),PageSize(int),PageIndex(int),Condition(string) /// </summary> /// <typeparam name="TItem"></typeparam> /// <param name="parames"></param> /// <param name="count"></param> /// <returns></returns> public List <TItem> QueryListByPage <TItem>(ParameCollection parames, out int count) where TItem : IModel, new() { string fields = parames["Fields"] + ""; if (string.IsNullOrEmpty(fields) || fields.Trim() == "*") { var typeArry = TypeCache.GetProperties(typeof(TItem), true).Values.ToList(); typeArry.RemoveAll(b => b.Length > 500 || b.PropertyType == typeof(byte[]));//默认移除长度大于500的字段 fields = Base.GetQueryFields(typeArry, false); } string sort = parames["sort"] + ""; if (string.IsNullOrEmpty(sort)) { sort = "id desc"; } string pageSize = parames["PageSize"] + ""; if (string.IsNullOrEmpty(pageSize)) { pageSize = "20"; } string pageIndex = parames["PageIndex"] + ""; if (string.IsNullOrEmpty(pageIndex)) { pageIndex = "1"; } string condition = parames["Condition"] + ""; return(QueryListByPage <TItem>(condition, fields, sort, int.Parse(pageSize), int.Parse(pageIndex), out count)); }
/// <summary> /// 指定条件和参数进行更新[基本方法] /// </summary> /// <param name="expression">条件</param> /// <param name="setValue">值</param> /// <returns></returns> public int Update(Expression <Func <TModel, bool> > expression, ParameCollection setValue) { DBExtend helper = dbHelper; int n = helper.Update <TModel>(expression, setValue); return(n); }
internal ParameCollection GetUpdateField <TModel>(TModel obj) where TModel : class { ParameCollection c = new ParameCollection(); if (obj is IModel) { c = (obj as IModel).GetUpdateField(_DBAdapter);//手动指定变更 if (c.Count > 0) { return(c); } } var fields = TypeCache.GetProperties(typeof(TModel), true);//全量更新 foreach (var f in fields.Values) { if (f.IsPrimaryKey) { continue; } c.Add(f.MemberName, f.GetValue(obj)); } return(c); }
/// <summary> /// 获取被修改的字段 /// </summary> /// <returns></returns> public ParameCollection GetUpdateField(DBAdapter.DBAdapterBase dBAdapterBase = null, bool check = true) { var c = new ParameCollection(); if (this.GetChanges().Count > 0)//按手动指定更改 { var fields = TypeCache.GetProperties(GetType(), true); foreach (var item in this.GetChanges()) { var key = item.Key.Replace("$", ""); var f = fields[key]; if (f == null) continue; if (f.IsPrimaryKey) continue; var value = item.Value; //如果表示值为被追加 名称为$name //使用Cumulation扩展方法后按此处理 if (key != item.Key)//按$name=name+'123123' { if (dBAdapterBase != null) { value = dBAdapterBase.GetFieldConcat(dBAdapterBase.KeyWordFormat(f.MapingName), value, f.PropertyType); } } c[item.Key] = value; } return c; } return c; }
/// <summary> /// 按匿名表达式更新 /// </summary> /// <typeparam name="TResult"></typeparam> /// <param name="expression"></param> /// <param name="newExpress"></param> /// <returns></returns> public int Update <TResult>(Expression <Func <T, bool> > expression, Expression <Func <T, TResult> > newExpress) { var c = new ParameCollection(); if (newExpress.Body is NewExpression) { var newExp = newExpress.Body as NewExpression; for (int i = 0; i < newExp.Members.Count; i++) { var m = newExp.Members[i]; var v = newExp.Arguments[i]; bool cos; var value = ConstantValueVisitor.GetMemberExpressionValue(v, out cos); c.Add(m.Name, value); } } else if (newExpress.Body is MemberInitExpression) { var memberInitExp = (newExpress.Body as MemberInitExpression); foreach (MemberAssignment m in memberInitExp.Bindings) { bool cos; var value = ConstantValueVisitor.GetMemberExpressionValue(m.Expression, out cos); c.Add(m.Member.Name, value); } } var db = DBExtend; var n = db.Update(expression, c); return(n); }
/// <summary> /// 指定条件和参数进行更新[基本方法] /// </summary> /// <param name="expression">条件</param> /// <param name="setValue">值</param> /// <returns></returns> public int Update(Expression <Func <TModel, bool> > expression, ParameCollection setValue) { AbsDBExtend db = DBExtend; int n = db.Update <TModel>(expression, setValue); return(n); }
/// <summary> /// 获取被修改的字段 /// </summary> /// <returns></returns> public ParameCollection GetUpdateField(bool check = true) { var c = new ParameCollection(); var fields = TypeCache.GetProperties(GetType(), true); if (this.GetChanges().Count > 0)//按手动指定更改 { foreach (var item in this.GetChanges()) { var key = item.Key.Replace("$", ""); var f = fields[key]; if (f == null) { continue; } if (f.IsPrimaryKey || f.FieldType != Attribute.FieldType.数据库字段) { continue; } var value = item.Value; //如果表示值为被追加 名称为$name //使用Cumulation扩展方法后按此处理 if (key != item.Key)//按$name=name+'123123' { if (f.PropertyType == typeof(string)) { value = string.Format("{0}+'{1}'", key, value); } else { value = string.Format("{0}+{1}", key, value); } } c[item.Key] = value; } return(c); } //按对象对比 var origin = this.OriginClone; if (origin == null && check) { throw new CRLException("_originClone为空,请确认此对象是由查询创建"); } foreach (var f in fields.Values) { if (f.IsPrimaryKey) { continue; } var originValue = f.GetValue(origin); var currentValue = f.GetValue(this); if (!Object.Equals(originValue, currentValue)) { c.Add(f.MemberName, currentValue); } } return(c); }
/// <summary> /// 指定条件和参数进行更新[基本方法] /// </summary> /// <param name="expression">条件</param> /// <param name="updateValue">值</param> /// <returns></returns> public int Update(Expression <Func <T, bool> > expression, Dictionary <string, object> updateValue) { var db = DBExtend; var c = new ParameCollection(updateValue); int n = db.Update(expression, c); return(n); }
public List <T> GetData <T>(out int outParame, ParameCollection fieldMapping = null) where T : class, new() { var data = ObjectConvert.DataReaderToList <T>(reader, false, fieldMapping); reader.Close(); outParame = handler(); return(data); }
public static void TestUpdate() { var instance = Code.ProductDataManage.Instance; #region 更新 //要更新属性集合 CRL.ParameCollection c = new CRL.ParameCollection(); c["ProductName"] = "product1"; Code.ProductDataManage.Instance.Update(b => b.Id == 4, c); //按对象差异更新 var p = new Code.ProductData() { Id = 4 }; //手动修改值时,指定修改属性以在Update时识别,分以下几种形式 p.Change(b => b.BarCode); //表示值被更改了 p.Change(b => b.BarCode, "123"); //通过参数赋值 p.Change(b => b.BarCode == "123"); //通过表达式赋值 Code.ProductDataManage.Instance.Update(b => b.Id == 4, p); //指定查询更新 p = Code.ProductDataManage.Instance.QueryItem(b => b.Id > 0); p.UserId += 1; Code.ProductDataManage.Instance.Update(p);//按主键更新,主键值是必须的 #endregion #region 缓存更新 var item = Code.ProductDataManage.Instance.QueryItemFromCache(1); var guid = Guid.NewGuid().ToString().Substring(0, 8); item.Change(b => b.SupplierName, guid); Code.ProductDataManage.Instance.Update(item); item = Code.ProductDataManage.Instance.QueryItemFromCache(1); var item2 = Code.ProductDataManage.Instance.QueryItem(1); var a = item.SupplierName == item2.SupplierName && item.SupplierName == guid; if (!a) { throw new Exception("更新缓存失败"); } #endregion #region 事务 string error; item = Code.ProductDataManage.Instance.QueryItem(1); var result = Code.ProductDataManage.Instance.PackageTrans((out string ex) => { ex = ""; var product = new ProductData(); product.BarCode = "sdfsdf"; product.Number = 10; ProductDataManage.Instance.Add(product); return(false); }, out error); if (result) { throw new Exception("事务未回滚"); } #endregion }
/// <summary> /// 指定格式化更新[基本方法] /// </summary> /// <param name="sql"></param> /// <param name="parame"></param> /// <param name="types"></param> /// <returns></returns> protected static int ExecuteWithFormat(string sql, ParameCollection parame, params Type[] types) { DBExtend helper = dbHelper; foreach (var p in parame) { helper.AddParam(p.Key, p.Value); } return(helper.Execute(sql, types)); }
/// <summary> /// 关联更新 /// </summary> /// <typeparam name="TJoin"></typeparam> /// <param name="expression"></param> /// <param name="updateValue">要按字段值更新,需加前辍$ 如 c["UserId"] = "$UserId"</param> /// <returns></returns> public int Update <TJoin>(Expression <Func <T, TJoin, bool> > expression, Dictionary <string, object> updateValue) where TJoin : class, new() { var db = DBExtend; var c = new ParameCollection(updateValue); var query = GetLambdaQuery(); query.Join(expression); return(db.Update(query, c)); }
/// <summary> /// 指定格式化查询列表[基本方法] /// </summary> /// <typeparam name="T"></typeparam> /// <param name="sql"></param> /// <param name="parame"></param> /// <param name="types"></param> /// <returns></returns> protected List <T> ExecListWithFormat <T>(string sql, ParameCollection parame, params Type[] types) where T : class, new() { DBExtend helper = dbHelper; foreach (var p in parame) { helper.AddParam(p.Key, p.Value); } return(helper.ExecList <T>(sql, types)); }
/// <summary> /// 指定格式化返回单个结果[基本方法] /// </summary> /// <param name="sql"></param> /// <param name="parame"></param> /// <param name="types"></param> /// <returns></returns> protected T ExecScalarWithFormat <T>(string sql, ParameCollection parame, params Type[] types) { DBExtend helper = dbHelper; foreach (var p in parame) { helper.AddParam(p.Key, p.Value); } return(helper.ExecScalar <T>(sql, types)); }
/// <summary> /// 指定格式化查询列表[基本方法] /// </summary> /// <typeparam name="T"></typeparam> /// <param name="sql"></param> /// <param name="parame"></param> /// <param name="types"></param> /// <returns></returns> protected List <T> ExecListWithFormat <T>(string sql, ParameCollection parame, params Type[] types) where T : class, new() { AbsDBExtend db = DBExtend; foreach (var p in parame) { db.AddParam(p.Key, p.Value); } return(db.ExecList <T>(sql, types)); }
/// <summary> /// 指定格式化返回单个结果[基本方法] /// </summary> /// <param name="sql"></param> /// <param name="parame"></param> /// <param name="types"></param> /// <returns></returns> protected T ExecScalarWithFormat <T>(string sql, ParameCollection parame, params Type[] types) { AbsDBExtend db = DBExtend; foreach (var p in parame) { db.AddParam(p.Key, p.Value); } return(db.ExecScalar <T>(sql, types)); }
/// <summary> /// 获取被修改的字段 /// </summary> /// <returns></returns> public ParameCollection GetUpdateField(DBAdapter.DBAdapterBase dBAdapterBase = null, bool check = true) { var c = new ParameCollection(); var fields = TypeCache.GetProperties(GetType(), true); if (this.GetChanges().Count > 0)//按手动指定更改 { foreach (var item in this.GetChanges()) { var key = item.Key.Replace("$", ""); var f = fields[key]; if (f == null) { continue; } if (f.IsPrimaryKey) { continue; } var value = item.Value; //如果表示值为被追加 名称为$name //使用Cumulation扩展方法后按此处理 if (key != item.Key)//按$name=name+'123123' { if (dBAdapterBase != null) { value = dBAdapterBase.GetFieldConcat(dBAdapterBase.KeyWordFormat(f.MapingName), value, f.PropertyType); } } c[item.Key] = value; } return(c); } //按对象对比 var origin = this.OriginClone; if (origin == null && check) { throw new CRLException("_originClone为空,请确认此对象是由查询创建"); } foreach (var f in fields.Values) { if (f.IsPrimaryKey) { continue; } var originValue = f.GetValue(origin); var currentValue = f.GetValue(this); if (!Equals(originValue, currentValue)) { c.Add(f.MapingName, currentValue); } } return(c); }
/// <summary> /// 按匿名对象更新 /// </summary> /// <typeparam name="TModel"></typeparam> /// <param name="expression"></param> /// <param name="updateValue"></param> /// <returns></returns> public int Update <TModel>(Expression <Func <TModel, bool> > expression, dynamic updateValue) where TModel : CRL.IModel, new() { var properties = updateValue.GetType().GetProperties(); var c = new ParameCollection(); foreach (var p in properties) { c.Add(p.Name, p.GetValue(updateValue)); } return(Update(expression, c)); }
/// <summary> /// 指定条件和参数进行更新[基本方法] /// </summary> /// <param name="expression">条件</param> /// <param name="setValue">值</param> /// <returns></returns> public int Update(Expression <Func <TModel, bool> > expression, ParameCollection setValue) { var query = GetLambdaQuery(); query.Where(expression); int n = Update(query, setValue); return(n); //var db = DBExtend; //int n = db.Update(expression, setValue); //return n; }
protected void Page_Load(object sender, EventArgs e) { var count = Code.MemberManage.Instance.Count(b => b.Id > 0); if (count == 0) { var m = new Code.Member() { Name = "hubro" }; int n = Code.MemberManage.Instance.Add(m); var c = new CRL.ParameCollection(); c["UserId"] = n; Code.ProductDataManage.Instance.Update(b => b.Id > 0, c); } }
/// <summary> /// 按匿名对象更新 /// </summary> /// <typeparam name="TOjbect"></typeparam> /// <param name="expression"></param> /// <param name="updateValue"></param> /// <returns></returns> public int Update <TOjbect>(Expression <Func <T, bool> > expression, TOjbect updateValue) where TOjbect : class { var db = DBExtend; if (updateValue is IDictionary) { var c = new ParameCollection(updateValue as Dictionary <string, object>); return(db.Update(expression, c)); } int n = db.Update(expression, updateValue); return(n); }
/// <summary> /// 按完整查询条件更新 /// </summary> /// <param name="query"></param> /// <param name="updateValue">要按字段值更新,需加前辍$ 如 c["UserId"] = "$UserId"</param> /// <returns></returns> public int Update(ILambdaQuery <T> query, IDictionary updateValue) { var db = DBExtend; var iDic = updateValue as Dictionary <string, object>; if (iDic == null) { throw new CRLException("无法转换为Dictionary<string, object>"); } var dic = new ParameCollection(iDic); return(db.Update(query as LambdaQuery <T>, dic)); }
/// <summary> /// 表示值被更改了 /// 当更新后,将被清空 /// </summary> /// <param name="name"></param> /// <param name="value"></param> internal protected void SetChanges(string name, object value) { if (!BoundChange) { return; } if (name.ToLower() == "boundchange") { return; } Changes = Changes ?? new ParameCollection(); Changes[name] = value; }
/// <summary> /// 指定拼接条件更新 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="setValue"></param> /// <param name="where"></param> /// <returns></returns> private int Update <T>(ParameCollection setValue, string where) where T : IModel, new() { CheckTableCreated <T>(); Type type = typeof(T); string table = TypeCache.GetTableName(type); string setString = ForamtSetValue <T>(setValue); string sql = _DBAdapter.GetUpdateSql(table, setString, where); sql = _DBAdapter.SqlFormat(sql); int n = helper.Execute(sql); ClearParame(); return(n); }
protected void Button2_Click(object sender, EventArgs e) { //创建分页存储过程sp_page.sql int page = 1; int pageSize = 15; int count; CRL.ParameCollection c = new CRL.ParameCollection(); string where = " InterFaceUser='******'";//按标准 SQL 进行拼接 c.SetQueryCondition(where); c.SetQueryPageIndex((int)page); c.SetQueryPageSize(pageSize); var list = Code.ProductDataManage.Instance.QueryListByPage(c, out count); }
/// <summary> /// 添加一个交易类型 /// 格式:帐户类型+交易方向+SequenceCode /// </summary> /// <param name="parentCode"></param> /// <param name="item"></param> /// <returns></returns> public TradeType AddTrade(string parentCode, TradeType item) { if (item.DataType == 0) { throw new Exception("item.DataType == 0"); } var obj = Add(parentCode, item); string tradeCode = string.Format("{0}{1}{2}", item.DataType.ToString().PadLeft(2, '0'), Convert.ToInt32(item.TradeDirection).ToString().PadLeft(2, '0'), item.SequenceCode); CRL.ParameCollection c = new CRL.ParameCollection(); c["tradeCode"] = tradeCode; Update(b => b.Id == obj.Id, c); return(obj); }
ParameCollection GetUpdateField <T>(T obj) where T : IModel, new() { var c = new ParameCollection(); var fields = TypeCache.GetProperties(typeof(T), true); if (obj.Changes.Count > 0) { foreach (var item in obj.Changes) { var f = fields[item.Key]; if (f == null) { continue; } if (f.IsPrimaryKey || f.FieldType == Attribute.FieldType.虚拟字段) { continue; } c[item.Key] = item.Value; } return(c); } var origin = obj.OriginClone; if (origin == null) { throw new Exception("_originClone为空,请确认此对象是由查询创建"); } CheckData(obj); foreach (var f in fields.Values) { if (f.IsPrimaryKey) { continue; } if (!string.IsNullOrEmpty(f.VirtualField)) { continue; } var originValue = f.GetValue(origin); var currentValue = f.GetValue(obj); if (!Object.Equals(originValue, currentValue)) { c.Add(f.Name, currentValue); } } return(c); }
protected void Button1_Click(object sender, EventArgs e) { //要更新属性集合 CRL.ParameCollection c = new CRL.ParameCollection(); c["ProductName"] = "product1"; Code.ProductDataManage.Instance.Update(b => b.Id == 4, c); //按对象差异更新 var p = new Code.ProductData() { Id = 4 }; //手动修改值时,指定修改属性以在Update时识别,分以下几种形式 p.Change(b => b.BarCode);//表示值被更改了 p.Change(b => b.BarCode,"123");//通过参数赋值 p.Change(b => b.BarCode == "123");//通过表达式赋值 Code.ProductDataManage.Instance.Update(b => b.Id == 4, p);//指定查询更新 Code.ProductDataManage.Instance.Update(p);//按主键更新,主键值是必须的 }
protected void Button2_Click(object sender, EventArgs e) { //创建分页存储过程sp_TablesPageNew.sql int page = 1; int pageSize = 15; int count; CRL.ParameCollection c = new CRL.ParameCollection(); string where = " InterFaceUser='******'";//按标准 SQL 进行拼接 c.SetQueryCondition(where); c.SetQueryPageIndex((int)page); c.SetQueryPageSize(pageSize); var list = Code.ProductDataManage.Instance.QueryListByPage(c, out count); }
public ActionResult Update(CRL.Package.RoleAuthorize.Employee u) { CRL.ParameCollection c = new CRL.ParameCollection(); if (!string.IsNullOrEmpty(u.PassWord)) { c["PassWord"] = CRL.Package.RoleAuthorize.EmployeeBusiness.Instance.EncryptPass(u.PassWord); } c["Locked"] = u.Locked; c["Role"] = u.Role; c["Department"] = u.Department; CRL.Package.RoleAuthorize.EmployeeBusiness.Instance.Update(b => b.Id == u.Id, c); return(Redirect(Request.UrlReferrer.ToString())); return(AutoBackResult("操作成功", Request.UrlReferrer.ToString())); }
/// <summary> /// 更新缓存中的一项 /// </summary> /// <typeparam name="TItem"></typeparam> /// <param name="newObj"></param> /// <param name="c"></param> internal void UpdateCacheItem <TItem>(TItem newObj, ParameCollection c) where TItem : IModel { var updateModel = MemoryDataCache.GetCacheTypeKey(typeof(TItem)); foreach (var key in updateModel) { MemoryDataCache.UpdateCacheItem(key, newObj, c); } NotifyCacheServer(newObj); //Type type = typeof(TItem); //if (TypeCache.ModelKeyCache.ContainsKey(type)) //{ // string key = TypeCache.ModelKeyCache[type]; // MemoryDataCache.UpdateCacheItem(key,newObj); //} }
/// <summary> /// 按匿名对象更新 /// </summary> /// <typeparam name="TOjbect"></typeparam> /// <param name="expression"></param> /// <param name="updateValue"></param> /// <returns></returns> public int Update <TOjbect>(Expression <Func <TModel, bool> > expression, TOjbect updateValue) where TOjbect : class { var properties = updateValue.GetType().GetProperties(); var c = new ParameCollection(); foreach (var p in properties) { c.Add(p.Name, p.GetValue(updateValue)); } var query = GetLambdaQuery(); query.Where(expression); int n = Update(query, c); return(n); }
public ActionResult Detail(CRL.Package.RoleAuthorize.Employee u) { CRL.ParameCollection c = new CRL.ParameCollection(); c["Name"] = u.Name; //c["AccountNo"] = u.Name; c["Mobile"] = u.Mobile; c["qq"] = u.QQ; c["Email"] = u.Email; c["Birthday"] = u.Birthday; c["Sex"] = u.Sex; c["IdentityNo"] = u.IdentityNo; c["Address"] = u.Address; c["RegisterIp"] = u.RegisterIp; c["Department"] = u.Department; CRL.Package.RoleAuthorize.EmployeeBusiness.Instance.Update(b => b.Id == u.Id, c); CRL.Package.RoleAuthorize.AccessControlBusiness.Instance.Delete(b => b.Role == u.Id && b.RoleType == CRL.Package.RoleAuthorize.RoleType.用户); //return Redirect("/Employee/"); return AutoBackResult("操作成功", Request.UrlReferrer.ToString()); }
public static void TestUpdate() { var instance = Code.ProductDataManage.Instance; #region 更新 //要更新属性集合 CRL.ParameCollection c = new CRL.ParameCollection(); c["ProductName"] = "product1"; Code.ProductDataManage.Instance.Update(b => b.Id == 4, c); //按对象差异更新 var p = new Code.ProductData() { Id = 4 }; //手动修改值时,指定修改属性以在Update时识别,分以下几种形式 p.Change(b => b.BarCode);//表示值被更改了 p.Change(b => b.BarCode, "123");//通过参数赋值 p.Change(b => b.BarCode == "123");//通过表达式赋值 Code.ProductDataManage.Instance.Update(b => b.Id == 4, p);//指定查询更新 p = Code.ProductDataManage.Instance.QueryItem(b => b.Id > 0); p.UserId += 1; Code.ProductDataManage.Instance.Update(p);//按主键更新,主键值是必须的 #endregion #region 缓存更新 var item = Code.ProductDataManage.Instance.QueryItemFromCache(1); var guid = Guid.NewGuid().ToString().Substring(0,8); item.Change(b => b.SupplierName, guid); Code.ProductDataManage.Instance.Update(item); item = Code.ProductDataManage.Instance.QueryItemFromCache(1); var item2 = Code.ProductDataManage.Instance.QueryItem(1); var a = item.SupplierName == item2.SupplierName && item.SupplierName == guid; if (!a) { throw new Exception("更新缓存失败"); } #endregion #region 事务 string error; item = Code.ProductDataManage.Instance.QueryItem(1); var result = Code.ProductDataManage.Instance.PackageTrans((out string ex) => { ex = ""; var product = new ProductData(); product.BarCode = "sdfsdf"; product.Number = 10; ProductDataManage.Instance.Add(product); return false; }, out error); if (result) { throw new Exception("事务未回滚"); } #endregion }
public ActionResult Update(CRL.Package.RoleAuthorize.Employee u) { CRL.ParameCollection c = new CRL.ParameCollection(); if (!string.IsNullOrEmpty(u.PassWord)) { c["PassWord"] = CRL.Package.RoleAuthorize.EmployeeBusiness.Instance.EncryptPass(u.PassWord); } c["Locked"] = u.Locked; c["Role"] = u.Role; c["Department"] = u.Department; CRL.Package.RoleAuthorize.EmployeeBusiness.Instance.Update(b => b.Id == u.Id, c); return Redirect(Request.UrlReferrer.ToString()); return AutoBackResult("操作成功", Request.UrlReferrer.ToString()); }