当前位置:  开发笔记 > 编程语言 > 正文

如何在没有数据上下文的情况下更新对象

如何解决《如何在没有数据上下文的情况下更新对象》经验,为你挑选了1个好方法。

实体框架为在同一datacontext中更新数据提供了极大的灵活性

Dim personA = (from p in datacontext.Person where p.PersonID = 1 select p)
personA.name = txtName.value
datacontext.savechanges()

如果我必须将此Update函数移动到仅在请求中使用"Person"的Service层,那么将"Person"请求对象分配到datacontext中而不再进行深度复制的最佳方法是什么?



1> TonyAbell..:

您需要将实体对象附加到数据上下文.

您还需要使用AttachUpdeted方法扩展数据上下文分部类.当您将对象附加到数据上下文时,它不知道已经进行了更新.下面的代码将告诉数据上下文每个属性都已更新,需要写入数据库.

public static void Save(EntityObject entity)
{
   using(MyContext ctx = new MyContext)
   {
     ctx.AttachUpdated(entity);
     ctx.SaveChanges();
   }  
} 

public static void AttachUpdated(this ObjectContext obj, EntityObject objectDetached)
{
   if (objectDetached.EntityState == EntityState.Detached)
   {
      object original = null;
      if (obj.TryGetObjectByKey(objectDetached.EntityKey, out original))
         obj.ApplyPropertyChanges(objectDetached.EntityKey.EntitySetName, objectDetached);
      else
       throw new ObjectNotFoundException();
    }
} 

第1
条第2条

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有