表数据入口(Table Data Gateway)
充当数据库表访问入口的对象。一个实例处理表中所有的行。
表数据入口包含了用于访问单个表或者视图的所有SQL,如选择、插入、更新、删除等。其他代码调用它的方法来实现所有与数据库的交互。
运行机制
- 表数据入口包括的每个方法,都将输入参数映射为一个SQL调用,并在数据库连接上执行该语句。
- 对于返回多行的方法,采取两种方法:
- 映射。把数据从数据集中复制到映射中,但是破坏了编译时检查.
- 数据传输对象。工作的较好,尽管需要创建额外的对象。
- 使用结果集。尽管在如.NET中很好地支持表数据入口和表模块很好地协调,单会带来概念上地混淆,因为内存中地对象无需知道SQL接口。
- 表数据入口可以适当地和领域对象一起工作,但领域对象和表入口之间会产生双向依赖。
- 可以为视图使用表数据入口,但要注意视图无法更新。
使用时机
- 表数据入口可以很好地映射到数据库上去,但和领域模型很少一起使用,因为数据映射器就能很好地分离领域模型和数据库。
- 表数据入口可以和表模块一起很好地使用,产生地记录集由表模块处理。
- 特别适用于事务脚本。
- 表数据入口和存储过程类似。插入和更新存储过程实际上也封装了实际地表结构
表数据入口示例
用表数据入口获取数据
用表数据入口获取数据,并返回多行
表数据入口示例
使用数据集
数据集和适配器是C#原有特性,在二者之间定义一个保持器,用于建立数据集和数据适配器之间地联系-填充适配器