写点什么

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

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

关注

评论

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

云安全中的常见云漏洞和威胁,有哪些防范措施

德迅云安全杨德俊

云安全 云监控 漏洞检测

听GPT 讲Rust Cargo源代码(2)

fliter

Gas Hero Pets NFT 概览与数据分析

Footprint Analytics

区块链 NFT

【快递鸟】智能化之路:即时零售的崛起与线下商超的转型

快递鸟

同城配送

当代码遇上玄学……

ZA技术社区

代码 bug 程序员‘ 玄学

企业借助聚道云软件连接器,轻松实现员工福利管理优化!

聚道云软件连接器

案例分享

DAPP持币生息项目系统开发|步骤逻辑|源码搭建

l8l259l3365

TDengine 签约海博思创,助力储能运维平台数据管理

TDengine

tdengine 时序数据库

NFTScan | 01.22~01.28 NFT 市场热点汇总

NFT Research

NFT NFT\ NFTScan

软件测试学习笔记丨Linux安装下载

测试人

软件测试

听GPT 讲Rust Cargo源代码(1)

fliter

Linux线程API使用与分析

不在线第一只蜗牛

Linux 运维 服务器

5天!软件开发考试该如何准备?

统信软件

AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案

阿里巴巴云原生

阿里云 云原生 Stable Diffusion Stable

如何领导规模化敏捷变革?

敏捷开发

敏捷开发 敏捷开发管理 safe 企业转型 规模化敏捷

探索拼多多API:打造个性化购物体验与互动营销工具

Noah

Vue中虚拟Dom技术,你学会了吗?

伤感汤姆布利柏

软件测试学习笔记丨http/https/tcp握手和回收/mock相关解释

测试人

软件测试

跨境远程控制软件分享,为何放弃向日葵?

小喵子

远程 远程软件 远程桌面办公

MSE Nacos 配置变更审计平台使用指南

阿里巴巴云原生

阿里云 微服务 云原生 nacos

数据访问效率百倍提升 HashData助力中国石油乘“数”而行

酷克数据HashData

点击查看 Milvus 社区十大关键词(上)

Zilliz

开源社区 Milvus 向量数据库 云原生向量数据库

2024年前端开发趋势的 6 个框架

伤感汤姆布利柏

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