Ejemplo n.º 1
0
        /// <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));
        }
Ejemplo n.º 2
0
        /// <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));
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 /// <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;
 }
Ejemplo n.º 6
0
        /// <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);
        }
Ejemplo n.º 7
0
        /// <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);
        }
Ejemplo n.º 8
0
        /// <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);
        }
Ejemplo n.º 9
0
        /// <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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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
        }
Ejemplo n.º 12
0
        /// <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));
        }
Ejemplo n.º 13
0
        /// <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));
        }
Ejemplo n.º 14
0
        /// <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));
        }
Ejemplo n.º 15
0
        /// <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));
        }
Ejemplo n.º 16
0
        /// <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));
        }
Ejemplo n.º 17
0
        /// <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));
        }
Ejemplo n.º 18
0
        /// <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);
        }
Ejemplo n.º 19
0
        /// <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));
        }
Ejemplo n.º 20
0
        /// <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;
        }
Ejemplo n.º 21
0
 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);
     }
 }
Ejemplo n.º 22
0
        /// <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);
        }
Ejemplo n.º 23
0
        /// <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));
        }
Ejemplo n.º 24
0
 /// <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;
 }
Ejemplo n.º 25
0
        /// <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);
        }
Ejemplo n.º 26
0
        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);
        }
Ejemplo n.º 27
0
        /// <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);
        }
Ejemplo n.º 28
0
        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);
        }
Ejemplo n.º 29
0
 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);//按主键更新,主键值是必须的
 }
Ejemplo n.º 30
0
        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);
        }
Ejemplo n.º 31
0
        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()));
        }
Ejemplo n.º 32
0
        /// <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);
            //}
        }
Ejemplo n.º 33
0
        /// <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);
        }
Ejemplo n.º 34
0
 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());
 }
Ejemplo n.º 35
0
        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
        }
Ejemplo n.º 36
0
 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());
 }