• Detach之后的POCO如何Attach以及LoadProperty


    public void Attach(string entityName, object entity, params string[] navigationProperties)
    {
      ObjectContext objectContext = ((IObjectContextAdapter)_Context).ObjectContext;
      objectContext.AttachTo(entityName, entity); //把detach的entity attach到ObjectContext
      objectContext.ObjectStateManager.GetObjectStateEntry(entity).SetModified(); //把entity的状态从Unchanged变为Modified
      foreach (string navigationProperty in navigationProperties) //如果有属性要访问,那么可以一起load
      {
        objectContext.LoadProperty(entity, navigationProperty);
      }
    }

    改进版本:

    public void Attach<TEntity>(object entity, params Expression<Func<TEntity, object>>[] navigationProperties)
    {
    ObjectContext objectContext = ((IObjectContextAdapter)_Context).ObjectContext;
    objectContext.AttachTo(entity.GetType().Name, entity);
    objectContext.ObjectStateManager.GetObjectStateEntry(entity).SetModified();
    foreach (Expression<Func<TEntity, object>> navigationProperty in navigationProperties)
    {
    objectContext.LoadProperty(entity, navigationProperty.Body.Type.Name);
    }
    }

  • 相关阅读:
    洛谷P1182 数列分段`Section II`
    洛谷P3902 递增
    洛谷P1678-烦恼的高考志愿
    POJ 3263-Tallest Cow
    洛谷P2280 [HNOI2003]激光炸弹
    POJ 1958
    Vijos 1197
    VirtualBox 导入.vdi文件时报“uuid is exists”错误
    解压常用
    cut 命令
  • 原文地址:https://www.cnblogs.com/ego/p/2746680.html
Copyright © 2020-2023  润新知