網(wǎng)上看到很多朋友在Update的時(shí)候都會(huì)用如下方法:
創(chuàng)新互聯(lián)公司長期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為北塔企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站建設(shè),北塔網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。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;
.......
簡單的說就是將新對(duì)象的屬性一個(gè)個(gè)復(fù)制,這樣做當(dāng)屬性少的時(shí)候還可以,但屬性多的時(shí)候就顯的低效率,代碼又長又惡心。所以自己總結(jié)出了UPDATE最簡單的方法。
///
/// 修改員工信息
///
///
///
[OperationContract]
public Employee UpdateEmployee(Employee newEntity)
{
_dataEntities.Employee.Attach(newEntity); // 附加對(duì)象
_dataEntities.ApplyCurrentValues
_dataEntities.ObjectStateManager.ChangeObjectState(newEntity, EntityState.Modified); // 修改對(duì)象狀態(tài),當(dāng)EntityState為Modified時(shí),SaveChanges才會(huì)執(zhí)行變更,否則無效。
return CommitAllChanges
}
以下是泛型方法,適用于增刪改的數(shù)據(jù)保存,同時(shí)解決了并發(fā)沖突。
///
/// 應(yīng)用數(shù)據(jù)變更
///
///
///
private T CommitAllChanges
{
try
{
// 解決并發(fā)沖突
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;
}
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。