EntityFrameWork 4.0相关

it2022-05-05  178

07-18 更新

ApplyCurrentValues 方法

原理是从指定的对象获取标量属性值,并拷贝它们到带有相同EntityKey的对象中去。任何与初始值不同的值将被标记为Modified

(我自己测试了下,是把自己改为Dettach,把带有相同EntityKey的对象Modify) 

 

 

ApplyPropertyChanges 方法的使用,修改实体

  使用ApplyPropertyChanges,可以使用不在集合中的实体覆盖到集合中主键对应用实体上 如果内存中没有主键对应的记录,会报错 Attach与ApplyPropertyChanges有类似之处,都是将Context集合外的[实体]与Context集合内的[实体]同步. ApplyPropertyChanges调用时,要求对应的[实体]在内存中,Attach不要求 pplyPropertyChanges调用后,集合内的实体状态会标记为EntityState.Modified Attach调用后不会修改合内的实体状态,如要SaveChanges(),要手动标记EntityState.Modified ApplyPropertyChanges是用[外部实体]全覆盖Context集合中的[实体], Attach方式,通过SetModifiedProperty()方法,可在调用SaveChanges()时,只修改只定有字段值 myContext context = new myContext(); myTab r1 = context.myTab.First(p => p.ID == 1);   myTab nr = myTab.CreatemyTab(1); nr.a = "wxwinter";   Console.WriteLine(nr.EntityState); //print:Detached Console.WriteLine(r1.EntityState); //print:Unchanged     context.ApplyPropertyChanges("myTab", nr);   myTab r2 = context.myTab.First(p => p.ID == 1);   Console.WriteLine(nr.EntityState); //print:Detached Console.WriteLine(r2.EntityState); //print:Modified   context.SaveChanges();

 

    //EntityKey

         public   bool  DeletObj( string  EntityName,  int  ObjID,  out   string  ErrorMessage)         {             try             {                 EntityKey ek  =   new  EntityKey( " WhtManagerEntities1. "   +  EntityName,  " id " , ObjID);                 object  o  =   null ;                 if  (ObjectContext.TryGetObjectByKey(ek,  out  o))                 {                     ObjectContext.AttachTo(EntityName, o);                     ObjectContext.ObjectStateManager.ChangeObjectState(o, EntityState.Deleted);                     ObjectContext.SaveChanges();                     ErrorMessage  =   "" ;                     return   true ;                 }                 ErrorMessage  =   " 找不到实体 " ;                 return   false ;             }             catch  (Exception ex)             {                 ErrorMessage  =  ex.Message;                 return   false ;             }         }

 

 

 

转载于:https://www.cnblogs.com/renjuwht/archive/2010/07/17/1779346.html


最新回复(0)