免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

C#提高知識(shí)ADO.NET實(shí)體數(shù)據(jù)模型(3)-關(guān)于回滾

原文

從事達(dá)州服務(wù)器托管,服務(wù)器租用,云主機(jī),雅安服務(wù)器托管,空間域名,CDN,網(wǎng)絡(luò)代維等服務(wù)。

ADO.NET 實(shí)體數(shù)據(jù)模型,其實(shí)我是不太喜歡用這個(gè),主要是遇到復(fù)雜查詢時(shí)linq語句寫起來比較多,當(dāng)然也是可以直接執(zhí)行sql語句的,但是執(zhí)行復(fù)雜sql時(shí)還是執(zhí)行不了,因?yàn)檫B接有問題。
但是ADO.NET實(shí)體有個(gè)優(yōu)點(diǎn)就是,能實(shí)時(shí)更新數(shù)據(jù)庫的變化,并且自動(dòng)更新模型,基于這一點(diǎn)也是我在使用純sql語句的時(shí)候,還是堅(jiān)持使用了不少實(shí)體數(shù)據(jù)模型的。
這幾天打算用實(shí)體模型寫一個(gè)多表順序修改的的數(shù)據(jù)庫操作的功能,也就是上一個(gè)表或記錄修改成功才能進(jìn)行下一個(gè)表或記錄的修改。這里就涉及到回滾的問題了。
我原本以為提供的有回滾的機(jī)制,不過沒找到,不知道是不是我的資料不全。
我覺得可以用如下方法解決。
1、如果是同一個(gè)Entities下,最好將每個(gè)表的記錄依次修改,然后最后只運(yùn)行一個(gè)SaveChanges(),來達(dá)到同時(shí)提交的目的。
例,表名為虛構(gòu),

using (MyEntities aentity = new MyEntities())
{
    TAB_MEMBER tab1 = aentity.TAB_MEMBER.Where(o => o.ID == "123").FirstOrDefault();
    tab1.TBM_ID = "234";
    TAB_EMPLOYEE tab2 = aentity.TAB_EMPLOYEE.Where(o => o.ID == "id1").FirstOrDefault();
    tab2.TBA_ID = "id2";
    aentity.SaveChanges();
}

2、可以將舊的記錄在一個(gè)新的實(shí)例中保存起來。但是不是引用賦值,而是將舊的記錄的字段和屬性,一次賦值給新的實(shí)例。然后保存修改,如果出錯(cuò)后,將新的實(shí)例的值再賦值給當(dāng)前要修改的記錄,再次保存。
也就是如下關(guān)系:
記錄1副本=記錄1;
bool r= 保存記錄1;

if(r)
{
bool r2 = 保存記錄2;
if(!r2)
{
將記錄一的副本重新保存,覆蓋掉記錄1的修改。
}
}
目前來說,我會(huì)使用這兩種方式解決回滾問題。歡迎大家交流。

文章標(biāo)題:C#提高知識(shí)ADO.NET實(shí)體數(shù)據(jù)模型(3)-關(guān)于回滾
本文來源:http://m.newbst.com/article42/jicjec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站服務(wù)器托管品牌網(wǎng)站制作面包屑導(dǎo)航企業(yè)網(wǎng)站制作網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營