您的位置:首页 > 其它

[新手入门]快速学习 ADO.NET Entity Framework系列文章 #4 -- 数据新增、删除、修改(ObkectContext的 .SaveChange()方法)

2010-10-27 18:15 1206 查看
[b]ADO.NET Entity入门的程序 #4(自己动手写)--数据新增、删除、修改(ObkectContext的 .SaveChange()方法)[/b]

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

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

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

[新手入门]快速学习 ADO.NET Entity Framework系列文章 [b]#1~#2[/b] (2010-10-27 18:04)

[新手入门]快速学习 ADO.NET Entity Framework系列文章 [b]#3[/b] -- LINQ-to-SQL、EntitySQL、查询产生器方法(Query builder)三种语法 (2010-10-27 18:11)

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

资料来源: 微软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.NETDataSet吗?

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

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

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

2009/5/15上市

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



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

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

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

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

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

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

最后.......一口气回写到数据库里(执行 Update的 SQL指令)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐