网上看到很多朋友在Update的时候都会用如下方法:
创新互联公司长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为北塔企业提供专业的成都做网站、成都网站建设,北塔网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。var sel=from t in _dataEntities.Employee where t.Id=newEntity.Id select sel;
if(sel.Count()==0)return;
Employee entity = sel.First();
entity.Name = newEntity.Name;
.......
简单的说就是将新对象的属性一个个复制,这样做当属性少的时候还可以,但属性多的时候就显的低效率,代码又长又恶心。所以自己总结出了UPDATE最简单的方法。
///
/// 修改员工信息
///
///
///
[OperationContract]
public Employee UpdateEmployee(Employee newEntity)
{
_dataEntities.Employee.Attach(newEntity); // 附加对象
_dataEntities.ApplyCurrentValues
_dataEntities.ObjectStateManager.ChangeObjectState(newEntity, EntityState.Modified); // 修改对象状态,当EntityState为Modified时,SaveChanges才会执行变更,否则无效。
return CommitAllChanges
}
以下是泛型方法,适用于增删改的数据保存,同时解决了并发冲突。
///
/// 应用数据变更
///
///
///
private T CommitAllChanges
{
try
{
// 解决并发冲突
if ((entity as EntityObject).EntityState!=EntityState.Added)
_dataEntities.Refresh(RefreshMode.ClientWins, entity);
_dataEntities.SaveChanges();
}
finally
{
if ((entity as EntityObject).EntityState != EntityState.Detached)
_dataEntities.Refresh(RefreshMode.StoreWins, entity);
}
return entity;
}
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。