写点什么

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

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

关注

评论

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

什么是MES系统,制造业必须搞懂的核心系统

万界星空科技

数字化转型 智能制造 mes 万界星空科技mes 智能化MES

解构 CodexField:创作者经济到模型金融化的代币逻辑与潜力

加密眼界

降低网络保险成本的实用技巧与网络安全实践

qife122

风险管理 网络保险

如何利用YashanDB确保数据合规性

数据库砖家

创作者经济→模型金融化:CodexField 代币逻辑与潜力解构

股市老人

鸿蒙应用开发从入门到实战(二十):ArkUI内置弹窗组件

程序员潘Sir

鸿蒙 HarmonyOS

用Comate做个会温馨提示的“纸片人”女友

Comate编码助手

AI 编程 文心快码 文心快码3.5S AI编程助手

工业设计 自控设计经验总结(10)

万里无云万里天

设计师 工业 工厂运维

工业设计 自控设计经验总结(11)

万里无云万里天

设计师 工业 工厂运维

安势信息亮相2025vivo开发者大会,多维度技术共推生态安全升级!

安势信息

Vivo 安势信息 清源 vivo年度最佳安全业务伙伴 CleanSource

大数据-123 - Flink 并行度设置优先级讲解 原理、配置与最佳实践 从Kafka到HDFS的案例分析

武子康

Java 大数据 flink spark 分布式

如何利用YashanDB实现端到端的数据治理?

数据库砖家

AI 改变数据库产品实践探索

老纪的技术唠嗑局

AI Agent MCP Server

将 GPU 级性能带到企业级 Java:CUDA 集成实用指南

程序猿DD

【SPIE出版】第五届计算机图形学、人工智能与数据处理国际学术会议(ICCAID 2025)

搞科研的小刘

人工智能 计算机图形学 数据处理 国际学术会议

海外原生 App 的开发费用

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

APP开发 软件外包公司 海外APP

嘉为蓝鲸CMeas效能洞察平台:在线SQL编辑支持实时预览,DevOps跨领域洞察更高效

嘉为蓝鲸

数据库 DevOps 研发效能度量 研发效能洞察管理 研发效能洞察

如何构建YashanDB的高可用性架构?

数据库砖家

诗画同源:元器激活想象,混元绘就诗意——让每一首古诗在孩子心中“活”起来

六月的雨在InfoQ

腾讯混元大模型AIGC

在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名媒体系统生态需求洞察

qife122

AI技术 开源生态

了解YashanDB中的数据分区管理技巧

数据库砖家

如何利用YashanDB构建灵活的数据模型?

数据库砖家

如何评估YashanDB的实施风险与挑战?

数据库砖家

简单高效的SQL注入测试方法:Break & Repair技巧详解

qife122

渗透测试 SQL注入

嘉为蓝鲸CCI持续集成平台:双模式增量扫描提效,质量门禁守护代码稳定

嘉为蓝鲸

DevOps 持续集成 CI/CD 流水线 持续集成平台

【IEEE冠名,香港中文大学(深圳)主办】第五届IEEE能源工程与电力系统国际学术会议(IEEE-EEPS 2025)

搞科研的小刘

国际学术会议 能源工程 电力xitong

共探数智新路径,嘉为蓝鲸出席2025长三角数字化转型大会,赋能制造业研发运维效率升级!

嘉为蓝鲸

研发效能 数字化转型 智能运维 研运一体化 智能研运

了解YashanDB中的数据建模基础

数据库砖家

如何利用YashanDB实施数据可视化

数据库砖家

springboot项目操作mysql出现锁表问题情况

刘大猫

人工智能 智能医疗 远程医疗 临床试验 医学统计

解构 CodexField:创作者经济到模型金融化的代币逻辑与潜力

加密眼界

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