EntityFrameWork 4.0相关

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值