AICon 上海站|90%日程已就绪,解锁Al未来! 了解详情
写点什么

迈向 Data 2.0——在客户端操作 ADO.NET 数据服务

  • 2008-08-18
  • 本文字数:1123 字

    阅读完需:约 4 分钟

在本系列的第一篇新闻中,介绍了 ADO.NET 数据服务框架的基本知识;昨日 ccBoy 在其博客上发表了一篇文章,介绍了在客户端如何对 ADO.NET 数据服务进行操作。

本文章以下图所示的关系图来作为练习的数据库(图片引用自 ccBoy 的博客):

在这个关系图中,需要特别注意的一点是,Book 表上的 Author ID 字段消失了:

Entity Framework 屏蔽和封装了 Book 表中 Author ID 属性,从而让客户端或用户看起来也更加面向对象。

接着,ccBoy 在这个数据库关系的基础上为大家提供了如下 9 种类型标准操作的示例代码:

  1. 新增一个作者和他的一本书。
  2. 新增一个作者,但不增加书。
  3. 给一个给定的作者,增加一本书的记录
  4. 修改作者的基本信息,并更新,但未修改作者和书的关联关系
  5. 修改书的基本信息,并更新;但未修改作者和书的关联关系
  6. 改变一个已关联的作者和书的关系,将书关联到另外一个作者。
  7. 删除给定作者的一本书。
  8. 删除一个作者,目前作者没有创作任何一本书。
  9. 删除一个作者,也包括他创作了所有书的记录。

除了以上的 9 类操作外,他也给出了一种处理异常的示例代码,值得大家借鉴。

在逐一展示了这些示例代码后,ccBoy 对 ADO.NET 数据服务的操作进行了一个总结,如下的总结对于理解在客户端对 ADO.NET 数据服务进行操作有很大的帮助:

四个 CRUD 操作(Create、Retrieve、Update 和 Delete)中的每个操作都映射到一个不同的 HTTP 动词:Retrieve 映射到 GET,Create 映射到 POST,Update 映射到 PUT,Delete 映射到 DELETE。 客户端的 Context 对象,你可以把它想像成离线版本的数据源 Entity Framework Context。

客户端所有的 CUD 的操作,只有在调用 SaveChanges(),才会将变化传送到真正的数据源。

SetLink,AddLink,DetachLink 是进行实体关系管理的……DetachLink 是在你要删除某个实体,你需要将有关联的两个实体之间的关联打断并告诉客户端的 Context。而 DeleteLink 更多的是告诉客户端 Context,你要将两个实体间的关联完全打断,这个方法有用,但我觉得它的实用性最低。

AttachTo 和 Detach 则是你用了处理实体状态的主要方法……当你调用 AttachTo 作用于一个 POCO 对象的时候,这个对象变成了实体……Detach 方法你可以将其理解成反操作,即将一个实体还原成 POCO。

有时候 AttachTo 操作是隐形的,比如所有通过 Context 查询方法查询来的对象,其实都是实体,同样你将一个 POCO 对象赋值给一个实体对象时,似乎也默认会将这个 POCO 对象加入到客户端 Context 中。

AddToXXX(比如:AddToAuthor) 是 Entity Framework 自动生成的简易方法,其实和调用 AddObject 方法等同。

最后,ccBoy 对 ADO.NET 数据服务和 ADO.NET 实体框架进行了一些讨论,涉及到和 NHibernate 比较,对编程模型和系统构架的影响,以及一些性能方面的探讨等。

2008-08-18 00:09924
用户头像

发布了 254 篇内容, 共 62.4 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

Go 中队列的实现

baiyutang

9月日更

2019-2021历年阿里Android面试真题,面试杀手锏

android 面试 移动开发

Groovy参数默认值在接口测试中应用

FunTester

接口测试 Groovy FunTester 参数默认值 重载

浅谈函数式编程与 Stream

Dobbykim

10天拿到字节跳动Android岗位offer,看完跪了

android 面试 移动开发

10天拿到字节跳动安卓岗位offer,阿里内部Android应届生就业宝典

android 面试 移动开发

异地多活知识总结

十二万伏特皮卡丘

关于一场甲乙双方争议的思考

boshi

创业 项目管理

2021Android大厂面试真题,2021Android面试心得

android 面试 移动开发

python学习:day3-流程控制

秦时明月

Python编程

12个View绘制流程高频面试题,膜拜大牛

android 面试 移动开发

2019-2021历年字节跳动Android面试真题解析,字节跳动高工面试

android 面试 移动开发

2020-2021华为Android面试真题,大厂内部资料

android 面试 移动开发

2021Android常见笔试题,字节面试官

android 面试 移动开发

10天用Flutter撸了个高仿携程App,薪资翻倍

android 面试 移动开发

1307页字节跳动Android面试全套真题解析火了,阿里P8大牛亲自教你

android 面试 移动开发

Linux IPTables:如何添加防火墙规则

华为云开发者联盟

Linux 防火墙 iptables 数据包 防火墙规则

Prometheus 2.25.0 新特性

耳东@Erdong

release Prometheus 9月日更

10天拿到字节跳动Android岗位offer,2021金三银四

android 面试 移动开发

10天拿到字节跳动Android岗位offer,【面试必会】

android 面试 移动开发

10天拿到阿里Android岗offer,面试必知必会

android 面试 移动开发

12年高级工程师的“飞升之路”,进阶学习资料

android 面试 移动开发

架构实战营 - 模块四作业

en

架构实战营

2020-2021阿里巴巴安卓面试真题解析,2021最新版

android 面试 移动开发

1-3年Android开发工程师面试经验分享,程序员去大公司面试

android 面试 移动开发

10天拿到阿里Android岗offer,深入剖析

android 面试 移动开发

2021Android岗面试题知识点小结,Android程序员必看

android 面试 移动开发

22. 哪种工作最容易被AI取代

Databri_AI

人工智能

Kotlin DSL实现原理介绍

maijun

kotlin dsl

1-3年Android开发工程师面试经验分享,资深大牛带你了解源码

android 面试 移动开发

详解网商银行“三地五中心”数据部署架构

博文视点Broadview

迈向Data 2.0——在客户端操作ADO.NET数据服务_.NET_朱永光_InfoQ精选文章