ADO.NET Entity入門的程式 #4(自己動手寫)--資料新增、刪除、修改(ObjectContext的 .SaveChange()方法)

1. ObjectContext.SaveChanges() 方法
2. 建立、加入、修改和刪除物件 (Entity Framework)
3. HOW TO:加入、修改和刪除物件 (Entity Framework)

微軟的範例有提供 C#語法的範例了, 所以我只在此補充 VB範例



當您要閱讀這篇文章之前,建議您先看過這系列的相關文章,循序漸進。

(以前發表過的 Entity相關文章)

http://www.dotblogs.com.tw/mis2000lab/Tags/ADO.NET%20Entity/default.aspx

 

 

本文也作為「下集(ASP.NET專題實務 II -- 範例集與 4.0新功能)」的

      第十五章  ADO.NET Entity framework補充範例

 

本文已經收錄在「下集(第二版)」 2011年推出的黑皮書裡面,

 

 

=============================================================================

資料來源:  微軟MSDN網站

ObjectContext.SaveChanges() 方法
http://msdn.microsoft.com/zh-tw/library/bb336792.aspx

建立、加入、修改和刪除物件 (Entity Framework)
http://msdn.microsoft.com/zh-tw/library/bb738695.aspx

HOW TO:加入、修改和刪除物件 (Entity Framework)
http://msdn.microsoft.com/zh-tw/library/bb386870.aspx

 

 

    微軟的範例有提供 C#語法的範例了,    所以我只在此補充 VB範例。

============================================================================= 

 

這三個範例的執行結果都一樣,只是採用了三種不同的查詢語法而已。

HTML畫面上都是空白的,只有一個 Label控制項。

其餘,純粹用手寫「後置程式碼」

 

最上方的「NameSpace」都一樣喔,我先寫在此

Imports System.Data
Imports System.Data.Objects
Imports System.Data.Objects.DataClasses
'==============================
Imports testModel   '==自己做的 Entity Model(請用 VS 2008/2010 先做好)
'==============================

 

後置程式碼如下(VB版)

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Using u_context As New testEntities
            '== 以下是 查詢產生器方法(Query builder methods)範例。

            Try


                ''**** 修改 ********************************(start)
                ''== 以下改用 test實體來承接
                Dim SelectTEST As test = u_context.test.Where("it.id = @id", New ObjectParameter("id", 3)).First()

                SelectTEST.title = "真珠草萃取物可以治療肝炎 韓國技轉錦鴻(Entity的 .SaveChange()方法)"
                SelectTEST.author = "錦鴻生技(Entity的 .SaveChange()方法)"
                ''**** 修改 ********************************(end)


 


                ''**** 刪除 ********************************(start)
                'Dim DeleteTEST As test = u_context.test.Where("it.id = @id", New ObjectParameter("id", 59)).First()


                'u_context.DeleteObject(DeleteTEST)
                ''**** 刪除 ********************************(end)

 



                ''**** 新增 ********************************(start)
                '
Dim AddTEST As New test()


                'AddTEST.test_time = "2010/10/27"
                'AddTEST.class = "其他"
                'AddTEST.title = "HOW TO:加入、修改和刪除物件 (Entity Framework)"
                'AddTEST.summary = "HOW TO:加入、修改和刪除物件 (Entity Framework)"
                'AddTEST.article = "HOW TO:加入、修改和刪除物件 (Entity Framework)"
                'AddTEST.author = "微軟MSDN網站"

                'u_context.test.AddObject(AddTEST)
                ''**** 新增 ********************************(end)


                Dim affectRows As Integer = u_context.SaveChanges()
                '*** 寫回資料庫裡面 ***

                Label1.Text = "<font color=red>完成! --- " & affectRows & "</font>"

            Catch ex As EntityException
                Response.Write(ex.ToString())
            Catch ex1 As DeletedRowInaccessibleException
                Response.Write(ex1.ToString())
            Catch ex2 As UpdateException
                Response.Write(ex2.ToString())
            End Try

        End Using

 

 

...................................................................................................................................................

 

不知道您還記得 ADO.NET的 DataSet嗎?

請看本書上集(ASP.NET 4.0 專題實務)第 13 / 14章

 

DataSet的兩種方法,  .Fill()方法用來撈取、查詢資料(搭配Select的 T-SQL指令)

而  .Update()方法則是用來寫入資料(包含 Insert / Delete / Update等 T-SQL指令)

 

不過, Entity framework是透過 EDM(.edmx檔)來管理資料庫裡面的「真正資料」

最後執行 .SaveChange()方法後才會真正回寫資料庫。

 

 

您有沒有發現,他們在「修改」現有資料的時候,都是 ---

      先把這筆記錄列出來(先查詢出來),然後逐一修改每一個欄位的「值」。

      最後.......一口氣回寫到資料庫裡(執行 Update的 SQL指令)

 

 

 

 

 

===  最後要打一下廣告  ==========================

 

1.  如果您覺得我的描述、寫作方式,符合您的胃口。

2.  如果您看完以後,知道我寫書、介紹一些控制項或是技術........不是「混過去」、「帶過去」而已,而是真真確確地蒐集 "有用的範例",讓您學得更深入!

3.  如果您覺得:我出完書以後,還不定期地提供售後服務,提供補充教材......這樣的互動是 "良性"的,是值得鼓勵的。......已經推出 兩百多篇 補充範例了

4. 如果您(尤其是學生)真的想把基礎學好,而不是 "混"過這一門課就好、而不是寫個(畢業專題的)屍體出來交差(能畢業就好).....那麼.......

 

請您購買下面的書籍,

東西多到您學不完

上 / 下兩集,兩本書的厚度(我蒐集的各種範例)將近 兩千頁 !!......絕對不會讓您失望

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程,遠距教學 (Web Form 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估