NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

【云资讯】行云管家-云计算服务商佼佼者

行云管家

云计算 云管理 云计算运维 云服务商

行云管家全面适配信创国产化平台

行云管家

云计算 信创 国产化 安全运维

杭州站|阿里云 Serverless 技术实践营(Serverless + 大数据)开启报名!

Serverless Devs

大数据 开源 Serverless 云原生

一文了解袋鼠云在实时数据湖上的探索与实践

袋鼠云数栈

数据湖 实时数据湖 湖仓一体 实时湖仓

如何选择安全稳定的大文件传输软件平台,企业传输必看

镭速

实力!云起无垠获评清华校友三创大赛“天使组”十强

云起无垠

开箱即⽤!HashData 云数仓上线华为蓝鲸应⽤商城

酷克数据HashData

我的世界Minecraft for Mac(沙盒游戏)v3.5.3.223测试版/v3.5.3正式版

mac

windows 游戏 Mac游戏下载 Minecraft 苹果mac

WorkPlus | 好用、专业、安全的局域网即时通讯及协同办公平台

WorkPlus

团队绩效考核,OKR还是KPI?

老张

OKR KPI 绩效考核

为什么用代理ip网页加载不出来,一直转圈?

巨量HTTP

代理IP

科兴未来 | 第十届中国(泰州)国际大健康产业高层次人才创新创业大赛公告

科兴未来News

NFT链游开发实现 DAPP 系统落地:探索数字艺术与游戏的未来

西安链酷科技

链游开发 NFT开发

2023 年中国国际服务贸易交易会发布:和鲸科技两项成果入选“智赋百业”人工智能融合发展与安全应用典型案例

ModelWhale

人工智能 大模型 AIGC

云桌面是什么?看完这篇你就明白了

青椒云云电脑

桌面云 云桌面

移动云桌面,随时随地交付桌面系统!

青椒云云电脑

云桌面

《孤注一掷》揭露你我身边的网络安全威胁

云起无垠

Mac电脑硬盘检测 SMART Utility for mac激活最新

mac大玩家j

Mac软件 硬盘检测 检测硬盘

文心一言 VS 讯飞星火 VS chatgpt (92)-- 算法导论8.3 5题

福大大架构师每日一题

福大大架构师每日一题

跟模型和中间层聊聊:什么是最好的AI原生应用?

Zilliz

Milvus 大模型 AIGC 向量数据库

Stream流处理快速上手最佳实践 | 京东物流技术团队

京东科技开发者

京东云 企业号9月PK榜

基于Spring事务的可靠异步调用实践 | 京东物流技术团队

京东科技开发者

spring 京东云 企业号9月PK榜

创新型联合共创 |数糖 × 和鲸:挖掘数据价值,形成数据产出

ModelWhale

数据分析 数据 商业价值 地理标志 联合共创

Footprint Analytics 宣布与 GameFi 平台 Game Verse 达成合作

Footprint Analytics

区块链

多链代币开发数字货币开发相关介绍

区块链软件开发推广运营

交易所开发 数字藏品开发 dapp开发 NFT开发 区块链开发链游开发

从好玩到好用:程序员用AI提效的那些事儿 | 京东云技术团队

京东科技开发者

AI 京东云 ChatGPT 企业号9月PK榜

企业选择云桌面系统的主要原因是什么?

青椒云云电脑

云桌面 云桌面厂家

NFT 钱包开发链游系统搭建技术

西安链酷科技

钱包系统开发 波场钱包 NFT链游

软件测试/测试开发丨Web自动化—capability参数配置 学习笔记

测试人

Python 程序员 软件测试 自动化测试 Web自动化测试

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