zoukankan      html  css  js  c++  java
  • EF Code First 更新部分字段时 未更新字段的验证问题

    很多时候 我们只需要更新某个类的部分属性。在EF CF中科院这样进行部分属性的更新

     public void EditEntity(T entity, params string[] modifiedProperty)

            {
                if (entity == null)
                {
                    throw new ArgumentNullException("实体类型不能为空");
                }
                attach(entity);
     
                var stateEntry = ((IObjectContextAdapter)context)
                    .ObjectContext
                    .ObjectStateManager
                    .GetObjectStateEntry(entity);
     
     
                for (int i = 0; i < modifiedProperty.Length; i++)
                {
                    stateEntry.SetModifiedProperty(modifiedProperty[i]);
                }
                context.SaveChanges();
    }

    上面的代码存在一个问题,如果存在某个不需要跟新的属性而该属性又绑定了验证,SaveChanges()方法就会引发 验证失败,从而使更新失败。

    我们可以利用

     ((IObjectContextAdapter)context)

                    .ObjectContext.SaveChanges();

     替代Context.SaveChanges(); 避免检查。

    拓展思考:

     上面的方法回避了所有的验证,而我们应该针对需要更改的字段进行验证, modifiedProperty 数组里的存有对应的字段名。可拓展成按需验证。

  • 相关阅读:
    最近忙于开发移动OA审批
    开发一个小软件
    VMWare上虚拟机访问宿主机需要注意的一个问题
    Visual Studio 中自带的电子邮件的正则表达式匹配中文的问题 与 \w
    开始应用设计模式
    jQuery与ASP.NET AJAX有冲突吗?
    有感于VMWare
    kvm 母镜像
    相关流程
    master事件处理
  • 原文地址:https://www.cnblogs.com/keyindex/p/2559711.html
Copyright © 2011-2022 走看看