写点什么

迈向 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:091180
用户头像

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

关注

评论

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

与地球和鸣:华为音乐以空间音频为桥连接自然之声

最新动态

AI英语能力评估APP的核心功能

北京木奇移动技术有限公司

AI教育 软件外包公司 AI技术应用

Apipost接口调试全解:从HTTP到gRPC,程序员必备的“协议生存指南

数据追梦人

启动!张一元携手用友BIP企业AI全栈云,百年茶香数智焕新

用友BIP

三门峡文旅集团:用友BIP企业AI全栈云赋能黄河流域文旅产业升级

用友BIP

APSEZ收购NQXT Australia

财见

Omnissa ThinApp 2503 - 应用虚拟化软件

sysin

horizon

广州生物医药产业全景解析:如何抓住未来千亿级产业机遇?

Y11

找工作 招聘 就业 广州 找实习

贝尔金在范围一和范围二排放中实现碳中和

财见

CST干货:移动电子设备的射频干扰和接收灵敏度分析

思茂信息

cst CST软件 CST Studio Suite

人工智能与预测性维护:AI如何帮助企业降低设备故障风险?

天津汇柏科技有限公司

人工智能 预测性维护

Apipost协议全栈支持+国密算法,调试效率飙出星际!

数据追梦人

Omnissa App Volumes 4, version 2503 - 实时应用程序交付系统

sysin

horizon

五一前再带大家卷一波Go高质量面试题

王中阳Go

Go

如何高效的进行生产管理?

积木链小链

数字化转型 智能制造 生产管理 车间管理

用友助力郴电国际司库建设项目成功上线,战略合作开启数智化转型新征程

用友BIP

SvelteKit 最新中文文档教程(23)—— CLI 使用指南

冴羽

前端 前端框架 React Svelte SvelteKit

Omnissa Horizon Windows OS Optimization Tool 2503 - Windows 系统映像优化工具

sysin

horizon

群贤毕至成果丰,共绘行业新未来,2025慕尼黑上海电子展圆满收官!

极客天地

热更新技术的范式重构:AI驱动下的智能生态基座构建

xuyinyin

【未来已来,智启新篇】三星Galaxy S25系列:定义旗舰体验

新消费日报

哈佛最新研究:比特币挖矿造成环境污染,190万人受影响

PowerVerse

比特币 挖矿

docker镜像仓库

不在线第一只蜗牛

Docker

AI 教育软件的开发

北京木奇移动技术有限公司

AI教育 软件外包公司 AI技术外包公司

电竞新时代:ToDesk/网易云/START三大云游戏平台深度横评,谁是真王者?

小喵子

云计算 云电脑 ToDesk 云电竞 网易云游戏电脑

AI 英语能力评估App的开发

北京木奇移动技术有限公司

AI技术 AI教育 软件外包公司

Flutter跨端范式重构:小程序容器化驱动的高效App开发基座

xuyinyin

容器技术演进:从云原生基座到小程序生态重构

xuyinyin

Omnissa Dynamic Environment Manager 2503 - 个性化动态 Windows 桌面环境管理

sysin

horizon

VMware ESXi 8.0U3e macOS Unlocker & OEM BIOS Lenovo (联想) 定制版

sysin

esxi

飞行器半实物联合仿真:技术解析与应用实践

DevOps和数字孪生

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