MIS2000 Lab. -- ASP.NET学习&分享 / ASP.NET案例精编(清华大学出版社)
您好,我来自台湾。很高兴与各位分享一些成果。希望对您有帮助。出版书籍是「ASP.NET案例精编 / 清华大学出版社」。

 

ADO.NET Entity入门的程序 #4(自己动手写)--数据新增、删除、修改(ObkectContext的 .SaveChange()方法)

http://www.dotblogs.com.tw/mis2000lab/archive/2010/10/27/entity_manual_4_savechange.aspx

 

 

 

当您要阅读这篇文章之前,建议您先看过这系列的相关文章,循序渐进。

(以前发表过的 Entity相关文章)

 

 

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

资料来源: 微软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, ByVale 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", NewObjectParameter("id", 3)).First()

               SelectTEST.title = "真珠草萃取物可以治疗肝炎 韩国技转锦鸿(Entity的 .SaveChange()方法)"
               SelectTEST.author = "锦鸿生技(Entity的 .SaveChange()方法)"
               ''**** 修改 ********************************(end)

 


               ''**** 删除 ********************************(start)
               'Dim DeleteTEST As test = u_context.test.Where("it.id = @id", NewObjectParameter("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>"

 

            Catchex As EntityException
               Response.Write(ex.ToString())
            Catchex1 As DeletedRowInaccessibleException
               Response.Write(ex1.ToString())
            Catchex2 As UpdateException
               Response.Write(ex2.ToString())
            End Try

        End Using

 

 

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

 

不知道您还记得 ADO.NET DataSet吗?

请看本书上集(ASP.NET案例精编 13 / 14

 

ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)

http://www.china-pub.com/46063 

2009/5/15上市

市场价 :¥59.80 RMB(人民幣)

 

ASP.NET案例精编--适用于VS2005/2008

   

 

 

DataSet的两种方法, .Fill()方法用来捞取、查询数据(搭配Select的 T-SQL指令)

而 .Update()方法则是用来写入数据(包含 Insert/ Delete / Update等 T-SQL指令)

 

不过, Entityframework是透过 EDM(.edmx文件)来管理数据库里面的「真正数据」

最后执行 .SaveChange()方法后才会真正回写数据库。

 

 

您有没有发现,他们在「修改」现有资料的时候,都是 ---

      先把这笔记录列出来(先查询出来),然后逐一修改每一个字段的「值」。

      最后.......一口气回写到数据库里(执行 Update的 SQL指令)

 

 

posted on 2010-10-27 18:15  MIS2000 Lab.  阅读(768)  评论(0编辑  收藏  举报


ASP.NET案例精编——适用于VS 2005/2008(配光盘)
 

当当网购买 http://product.dangdang.com/product.aspx?product_id=20583373&ref=search-1-pub