91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#提高知識 ADO.NET實體數據模型(3)-關于回滾

發布時間:2020-07-04 22:14:42 來源:網絡 閱讀:483 作者:yangyoushan 欄目:編程語言

原文

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

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、可以將舊的記錄在一個新的實例中保存起來。但是不是引用賦值,而是將舊的記錄的字段和屬性,一次賦值給新的實例。然后保存修改,如果出錯后,將新的實例的值再賦值給當前要修改的記錄,再次保存。
也就是如下關系:
記錄1副本=記錄1;
bool r= 保存記錄1;

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

无为县| 荥阳市| 铜陵市| 镶黄旗| 北安市| 墨玉县| 永登县| 玛沁县| 宜宾县| 青田县| 乌海市| 防城港市| 饶河县| 志丹县| 海盐县| 怀来县| 富源县| 逊克县| 汨罗市| 石林| 同江市| 五台县| 来宾市| 会昌县| 富顺县| 自治县| 南江县| 双牌县| 长宁区| 托克托县| 永嘉县| 焉耆| 观塘区| 金沙县| 布拖县| 邓州市| 苗栗县| 儋州市| 上虞市| 资阳市| 清河县|