写点什么

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

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

关注

评论

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

Dubbo服务治理之灰度发布方案(版本发布控制影响范围)

Java 程序员 后端

进击的Java(一)

ES_her0

11月日更

Elasticsearch中的Term查询和全文查询,重磅

Java 程序员 后端

【Promise 源码学习】第二篇 - Promise 功能介绍与特性分析

Brave

源码 Promise 11月日更

Docker系列(1)--Docker原理及安装,java线程池回收原理

Java 程序员 后端

所谓的新型“数字人民币”诈骗,这里有几个疑点

CECBC

讲分布式唯一id,这篇文章很实在

秦怀杂货店

Java 分布式 分布式ID

各地力推“链长制”,区块链让产业链更加安全可靠

CECBC

ElasticSearch集群的概念及搭建过程,Java程序员晋升路线

Java 程序员 后端

Flink处理函数实战之一:深入了解ProcessFunction的状态(Flink-1

Java 程序员 后端

Docker下Nacos配置应用开发,java初级程序员面试

Java 程序员 后端

Dubbo服务消费者调用过程,35岁老年程序员的绝地翻身之路

Java 程序员 后端

Flink SQL Client综合实战,深入理解java虚拟机百度云

Java 程序员 后端

DL4J实战之一:准备,工业互联网架构师

Java 程序员 后端

Docker下,五分钟极速体验机器学习,java从入门到精通第五版防盗码

Java 程序员 后端

Docker Swarm从部署到基本操作,Java程序员进大厂面试必备基础技能

Java 程序员 后端

Elasticsearch聚合的嵌套桶如何排序(1),java大学基础教程

Java 程序员 后端

ELK太重?试试KFC日志采集,2021大厂Java面试经验

Java 程序员 后端

【高并发】两种异步模型与深度解析Future接口

冰河

Java 并发编程 多线程 高并发 异步编程

【死磕Java并发】-----Java内存模型之happens-before

chenssy

11月日更 死磕 Java 死磕 Java 并发

Redis 实现附近的人,全靠 GEO 数据结构让我邂逅女神

码哥字节

redis BitMap geohash NoSQL 数据库 11月日更

案例推荐|Apache Pulsar 助力金山云日志服务,日处理 200TB 数据

Apache Pulsar

开源 云原生 日志 中间件 Apache Pulsar 消息系统

Dubbo如何支持本地调用?InJvm方式解析,农民工看完都会了

Java 程序员 后端

Elasticsearch 如何做到快速检索 - 倒排索引的秘密,springboot项目实战

Java 程序员 后端

Elasticsearch中URI Search和RequestBody Search分析(1)

Java 程序员 后端

ELK + Filebeat + Kafka 分布式日志管理平台搭建,最新java面试题及答案

Java 程序员 后端

Flink的sink实战之四:自定义,Java开发笔试题目

Java 程序员 后端

disruptor笔记之四:事件消费知识点小结,kalilinux教程pdf

Java 程序员 后端

迎接央行数字货币,你准备好了吗

CECBC

Windows11 搭建openvino_tensorflow环境

IT蜗壳-Tango

IT蜗壳 OpenVINO 11月日更 openvino_tensorflow

Elasticsearch聚合的嵌套桶如何排序,java架构和框架

Java 程序员 后端

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