首页 > 数据库技术 > 详细

EF 直接修改数据,不再查询数据库

时间:2015-12-09 15:13:51      阅读:192      评论:0      收藏:0      [点我收藏+]
public int UpData(T model, params string[] proNames)
        {
          
                //4.1将 对象 添加到 EF中
                DbEntityEntry entry = db.Entry<T>(model);

                var set = db.Set<T>().Find(DbContextExtensions.GetEntityKey(db, model));

                if (set != null)
                {
                    entry.State = EntityState.Detached; //这个是在同一个上下文能修改的关键
                }
                //4.2先设置 对象的包装 状态为 Unchanged

                entry.State = EntityState.Unchanged;
                //4.3循环 被修改的属性名 数组
                foreach (string proName in proNames)
                {
                    //4.4将每个 被修改的属性的状态 设置为已修改状态;后面生成update语句时,就只为已修改的属性 更新
                    entry.Property(proName).IsModified = true;
                }
                //4.4一次性 生成sql语句到数据库执行
                return db.SaveChanges();
            
        }

  

public static class DbContextExtensions
    {
        public static int GetEntityKey(this DbContext context, object entity)
        {
            var adapter = context as IObjectContextAdapter;
            var entry = adapter.ObjectContext.ObjectStateManager.GetObjectStateEntry(entity);
           string id=  entry.EntityKey.EntityKeyValues[0].Value.ToString();
           
            return  int.Parse(id);
        }
    }

  

EF 直接修改数据,不再查询数据库

原文:http://www.cnblogs.com/lkd3063601/p/5032870.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!