<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      MVC3+EF4.1學習系列(七)-----EF并發的處理

      文章索引和簡介

      看這篇文章之前 推薦園子里的 這個文章  已經有介紹了 而且寫的很好~~ 可以先看下他的 再看我的

      并發

      1.悲觀并發

      簡單的說 就是一個用戶訪問一條數據時 則把這個數據變為只讀屬性  把該數據變為獨占 只有該用戶釋放了這條數據 其他用戶才能修改 這期間如果該用戶上個廁所 出去玩一圈 沒有退出 則其他人都要等很久 很顯然 這不是我們期望的效果  也不是這篇文章討論的重點

      2.樂觀并發

      樂觀并發相對悲觀并發,用戶讀取數據時不鎖定數據。當一個用戶更新數據時,系統將進行檢查,查看該用戶讀取數據后其他用戶是否又更改了該數據。如果其他用戶更新了數據,將產生一個錯誤。這也是這篇文章主要講的。

      如何讓EF實現樂觀并發呢 其實很簡單 只用簡單三部就可以打造樂觀并發了~

      以院系類為例子

      第一步 . 給實體類添加 一個時間戳

        [Timestamp]
      public Byte[] Timestamp { get; set; }

      第二步,在我們的院系編輯視圖里 加上

      @Html.HiddenFor(model => model.Timestamp)

      也就是說 在讀取的時候 把這個時間戳讀取出來

      第三步,捕獲并發異常給用戶一個友好的提示

              [HttpPost]
      public ActionResult Edit(Department department)
      {
      try
      {

      if (ModelState.IsValid)
      {
      db.Entry(department).State
      = EntityState.Modified;
      db.SaveChanges();
      return RedirectToAction("Index");
      }
      }
      catch (DbUpdateConcurrencyException ex)
      {
      ModelState.AddModelError(
      string.Empty, "友好的提示");
      }
      }

      好了 這時可以如果有 如下情況  一個用戶打開編輯院系  另一個也打開了編輯院系  當一個提交后  另一個再提交 則會提示出  友好的提示 告訴他 數據已經變更了~~

      3.思考

      并發管理 雖然實現了 EF幫我做了 但是我們不應該只局限與實現  要去想想中間給了我們哪些啟發 

      打開SQL監控  開開更新時  EF幫我們做了哪些操作

      exec sp_executesql N'update [dbo].[Department]
      set [Name] = @0, [Budget] = @1, [StartDate] = @2, [InstructorID] = @3
      where (([DepartmentID] = @4) and ([Timestamp] = @5))
      select [Timestamp]
      from [dbo].[Department]
      where @@ROWCOUNT > 0 and [DepartmentID] = @4
      ',N'@0 nvarchar(50),@1 decimal(19,4),@2 datetime,@3 int,@4 int,@5 binary(8)',@0=N'WLF',@1=10000.0000,@2='09 1 2007 12:00:00:000AM',@3=3,@4=3,@5=0x00000000000007D9

      我們看到 更新后 查詢Timestamp

      于是 個人猜想 不見得對  過程應該是這樣的

      用戶讀取 這條數據時  讀取到他的 Timestamp   然后更新時  檢測則個和上次是否一樣 不一樣 說明有人剛才更新過了  這個方法 我們在用ado.net時  同樣可以用到~~

      細心的朋友會發現 上面的SQL語句更新時 并沒有更新 Timestamp 啊 

      這里再說下這個  timestamp

      每個數據庫都有一個計數器,當對數據庫中包含 timestamp 列的表執行插入或更新操作時,該計數器值就會增加。 該計數器是數據庫時間戳。 這可以跟蹤數據庫內的相對時間,而不是時鐘相關聯的實際時間。 一個表只能有一個 timestamp 列。 每次修改或插入包含 timestamp 列的行時,就會在 timestamp 列中插入增量數據庫時間戳值。

      詳見 MSDN------原文



      總結

      學習應該多去思想 了解原理 才能破而后立 ~~

      下一節 EF處理繼承

      posted on 2011-08-02 08:44  wlf  閱讀(14627)  評論(12)    收藏  舉報

      主站蜘蛛池模板: 亚洲成a人片在线视频| 肥臀浪妇太爽了快点再快点| 91精品国产自产91精品| 人人妻人人狠人人爽天天综合网 | 国产自产对白一区| 欧美日本国产va高清cabal| 亚洲 欧美 影音先锋| 色吊丝中文字幕在线观看| 免费观看欧美猛交视频黑人| 镇原县| 一级女性全黄久久片免费| 国产精品中文字幕观看| 色婷婷日日躁夜夜躁| 亚洲无人区码二码三码区| 国产综合久久99久久| 国产成人亚洲精品狼色在线| 亚洲少妇一区二区三区老| 四虎国产精品永久在线| 深田えいみ禁欲后被隔壁人妻| 好爽毛片一区二区三区四| 26uuu另类亚洲欧美日本| 久久人妻精品大屁股一区| 国产一级三级三级在线视| 护士张开腿被奷日出白浆| 91一区二区三区蜜桃臀| 欧美成本人视频免费播放| 国产人妻人伦精品1国产丝袜| 亚洲国产欧美在线看片一国产 | 定南县| 国产福利深夜在线播放| 视频一区二区 国产视频| 亚洲精品成人区在线观看| 四房播色综合久久婷婷| 国产免费性感美女被插视频| 国产AV影片麻豆精品传媒| 无套内谢少妇一二三四| 久久夜色精品国产亚av| 91久久夜色精品国产网站| 精品国产成人国产在线观看| 国产人成视频在线观看| 黄色免费在线网址|