zoukankan      html  css  js  c++  java
  • 关于EntityFramework4.x/5.0只更新某部分字段的问题

    因为4.x/5.0的context都采用了继承DbContext,但DbContext不提供修改字段状态的相关操作方法,可是实现了IObjectContextAdapter接口,我们可以从这里拿到ObjectContext,这样一切都好办了.我们可以如下操作

    public int Update(E entity, string[] propertys)
            {
                int changeCount = 0;
                using(TransactionScope transaction = new TransactionScope (TransactionScopeOption.Required))
                {
                    using (YzOASysEntities context = new YzOASysEntities())
                    {
                        context.Set<E>().Attach(entity);
                        
                        IObjectContextAdapter objectContextAdatper = context;
                        ObjectContext objectContext = objectContextAdatper.ObjectContext;
                        ObjectStateEntry ose = objectContext.ObjectStateManager.GetObjectStateEntry(entity);
                        foreach (string property in propertys)
                        {
                            ose.SetModifiedProperty(property);
                        }
    
                        if (context.Entry<E>(entity).State == EntityState.Unchanged)
                            context.Entry<E>(entity).State = EntityState.Modified;
                        changeCount = context.SaveChanges();
                        if (changeCount > 0)
                            transaction.Complete();
                    }
                }
                return changeCount;
                
            }

    其实设不设置State是Modified都没问题.因为上面已经把状态给同步了.

  • 相关阅读:
    struts2 局部类型转换器
    Struts2 命名空间配置
    Struts2 国际化
    Struts2 跟踪用户状态
    Struts2
    Struts2支持的处理结果类型
    SGI STL内存配置器(一):内存泄漏?
    TP 3.2 笔记 (1)
    AOP TP框架有感
    eclipse+git
  • 原文地址:https://www.cnblogs.com/pigwing/p/2664025.html
Copyright © 2011-2022 走看看