EF 指定字段修改

Posted 火焰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF 指定字段修改相关的知识,希望对你有一定的参考价值。

技术分享
 public virtual void Modify(T model, params string[] ProNames)
        { 
            DbEntityEntry entry = db.Entry<T>(model);
            entry.OriginalValues.SetValues(model);  // 没有此句修改不了
            entry.State = System.Data.EntityState.Unchanged; 
            foreach (string Name in ProNames)
            {
                entry.Property(Name).IsModified = true;
            }
            //return db.SaveChanges(); 
        }
                 
                         
        public virtual void Modify(T model, Expression<Func<T, bool>> whereLambda, params string[] ModifiedProNames)
        {
            List<T> listModifeding = db.Set<T>().Where(whereLambda).ToList();
            listModifeding.ForEach(s =>
            {
                Modify(model, ModifiedProNames);
            });

            #region 重构前
            //Type t = typeof(T);
            //List<PropertyInfo> proInfo = t.GetProperties(BindingFlags.Instance | BindingFlags.Public).ToList();
            //Dictionary<string, PropertyInfo> dictPros = new Dictionary<string, PropertyInfo>();

            //proInfo.ForEach(p =>
            //    {
            //        if (ModifiedProNames.Contains(p.Name))
            //        {
            //            dictPros.Add(p.Name, p);
            //        }
            //    });

            //foreach (string Name in ModifiedProNames)
            //{
            //    if (dictPros.ContainsKey(Name))
            //    {
            //        PropertyInfo PInfo = dictPros[Name];
            //        object NewValue = PInfo.GetValue(model, null);
            //        foreach (T us in listModifeding)
            //        {
            //            PInfo.SetValue(us, NewValue, null);
            //        }
            //    }
            //} 
            #endregion

            ////return db.SaveChanges();
        }
EF Modify

 

以上是关于EF 指定字段修改的主要内容,如果未能解决你的问题,请参考以下文章

ef怎么实现只更新指定字段

EF添加关联的提示问题:映射从第 260 行开始的片段时有问题:

EF Core 5 - 支持字段:找不到属性的指定字段

传入指定字段名称就可以排序的EF写法

Entity Framwork(EF) 7——在Controller内获取指定字段的值

ef codeFirst 修改表结构 增加字段等 EF code first需要重新生成库导致数据丢失的问题.