领测软件测试网
软件测试技术第一门户1A`zD(K.FPKb3`6ydk5eF*Py最后,以上代码说明了封装的强大功能。处理 DataSet 中的 NULL 并非最简单的事,因为每次提取值时都需要检查它是否为 NULL。使用上述填充方法,我们在一个地方就轻松地解决了此问题,使我们的客户无需处理它。
软件测试技术第一门户+J?;Eo8K"G%@0Xsf-K软件测试技术第一门户l0|U+vx9Jo映射到何处?
软件测试技术第一门户0iA9i B3@)u2a6T;} `b!MFoO关于此类数据访问和映射函数的归属问题存在一些争论,即究竟是作为独立类的一部分,还是作为适当自定义实体的一部分。将所有用户相关的任务(获取数据、更新和映射)都作为 User 自定义实体的一部分当然很不错。这在数据库架构与自定义实体很相似时会很有用(比如在本例中)。随着系统复杂性的增加,这两个世界的差异开始显现出来,将数据层和业务层明确分离对简化维护有很大的帮助(我喜欢将其称为数据访问层)。将访问和映射代码放在其自己的层 (DAL) 上有一个副作用,即它为确保数据层与业务层的明确分离提供了一个严格的原则:
Z&m$y7v-h
t+f`*l)_(V
Y3cZ0nY$n“永远不要从 System.Data 返回类或从 DAL 返回子命名空间”
软件测试技术第一门户\5\O l.Mf#?软件测试技术第一门户;@0l+Zxz