Entity Framework(3)修改

     #region 修改

        /// <summary>
        /// 修改一条数据
        /// </summary>
        /// <param name="model">修改的对象</param>
        /// <param name="propertys">需要修改的属性</param>
        /// <returns>影响行数</returns>
        public int UpdateByModel(T model, params string[] propertys)
        {
            DbEntityEntry<T> entry = db.Entry(model);
            entry.State = EntityState.Unchanged;
            foreach (string property in propertys)
            {
                entry.Property(property).IsModified = true;
            }
            db.Configuration.ValidateOnSaveEnabled = false;
            return db.SaveChanges();
        }

        /// <summary>
        /// 修改多条数据
        /// </summary>
        /// <param name="modelList">修改的对象的集合</param>
        /// <param name="propertys">需要修改的属性</param>
        /// <returns>影响行数</returns>
        public int UpdateByList(List<T> modelList, params string[] propertys)
        {
            if (propertys == null)
            {
                throw new ArgumentNullException("属性名不能为空");
            }
            modelList.ForEach(m =>
            {
                DbEntityEntry<T> entry = db.Entry(m);
                entry.State = EntityState.Unchanged;
                foreach (string property in propertys)
                {
                    entry.Property(property).IsModified = true;
                }
                db.Configuration.ValidateOnSaveEnabled = false;
            });
            return db.SaveChanges();
        }

        /// <summary>
        /// 根据条件更新
        /// </summary>
        /// <param name="where">条件</param>
        /// <param name="model">修改的对象</param>
        /// <param name="propertys">需要修改的属性</param>
        /// <returns>影响行数</returns>
        public int UpdateByWhere(Expression<Func<T, bool>> where, T model, params string[] propertys)
        {
            if (where == null)
            {
                throw new ArgumentNullException("条件(where)不能为空");
            }
            List<T> query = db.Set<T>().Where(where).ToList();
            Type t = typeof(T);
            //获取公共属性
            List<PropertyInfo> propertyInfos = t.GetProperties(BindingFlags.Instance | BindingFlags.Public).ToList();
            //生成字典
            Dictionary<string, PropertyInfo> dicPropertys = new Dictionary<string, PropertyInfo>();
            propertyInfos.ForEach(p =>
            {
                if (propertys.Contains(p.Name))
                {
                    dicPropertys.Add(p.Name, p);
                }
            });
            //修改已查询出的对象中需要修改的属性的值
            foreach (string property in propertys)
            {
                if(dicPropertys.ContainsKey(property))
                {
                    PropertyInfo proInfo = dicPropertys[property];
                    object newValue = proInfo.GetValue(model, null);
                    foreach (T item in query)
                    {
                        proInfo.SetValue(item, newValue, null);
                    }
                }
            }
            return db.SaveChanges();
        }

        #endregion

更新比较复杂一点点

   static void Main(string[] args)
        {
            try
            {
                MT5RiskManagementEntities mt5 = new MT5RiskManagementEntities();
                EntityFramework<User> ef = new EntityFramework<User>(mt5);
                int count = 0;
                User user = new User() { id = 104, name = "雷军", age = 48 };
                count = ef.UpdateByModel(user, "name", "age");
                Console.WriteLine(string.Format("更新了{0}条数据", count));
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadKey();
            }
        }


  static void Main(string[] args)
        {
            try
            {
                MT5RiskManagementEntities mt5 = new MT5RiskManagementEntities();
                EntityFramework<User> ef = new EntityFramework<User>(mt5);
                int count = 0;
                List<User> users = new List<User>();
                users.Add(new User() { id = 104, name = "马云", age = 53 });
                users.Add(new User() { id = 105, name = "马云", age = 53 });
                count = ef.UpdateByList(users, "name", "age");
                Console.WriteLine(string.Format("更新了{0}条数据", count));
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadKey();
            }
        }

   static void Main(string[] args)
        {
            try
            {
                MT5RiskManagementEntities mt5 = new MT5RiskManagementEntities();
                EntityFramework<User> ef = new EntityFramework<User>(mt5);
                int count = 0;
                User user = new User() { age = 53 };
                count = ef.UpdateByWhere(u => u.id > 140, user, "name", "age");
                Console.WriteLine(string.Format("更新了{0}条数据", count));
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadKey();
            }
        }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值