======== 关于字段映射 类调用 数据读取逻辑============
时间: 2019-05-06来源:博客园
前景提要
======== 关于字段映射 类调用 数据读取逻辑============
0 悬赏园豆: 100 [待解决问题] 假设当前有一个用户表有以下字段
ID
UserName
Email
ZipCode
Address
PhoneNumber
有一个用户实体类,和上面的表字段完全对应。
现在让你开发一个类库,其中包含以下方法
一个用于读取用户表中的所有用户集合的方法 GetAllUsers,返回 用户实体类 的集合
一个读取指定用户的 GetUserById 方法,返回一个 用户实体类
现在有以下不同的若干页面
A页面,仅仅显示 ID UserName
B页面,仅仅显示 ID UserName Email
C页面,仅仅显示 ID UserName PhoneNumber
因为你在开发类库让别人调用,所以你无法知道别人会不会使用 PhoneNumber 这个字段,所以你在类中的每个方法中都查询出了 PhoneNumber 这个字段,但是如果从业务需求的层面来看,A,B页面并没有使用到 PhoneNumber, 返回这个字段对于 A,B页面并没有意义,尤其是在表数据量大的情况下,浪费带宽及其它资源 。
这个问题,你们是怎么处理的?
如果为了避免这种浪费,你创建了以下方法
GetAllUsers_For_PageA ,返回 用户实体类 的集合,除 ID UserName 以外,其实属性值都为null
GetAllUsers_For_PageB,,返回 用户实体类 的集合,除 ID UserName Email 以外,其实属性值都为null
GetAllUsers_For_PageC,,返回 用户实体类 的集合,除 ID UserName Email PhoneNumber以外,其实属性值都为null
这样最大程度上节省了资源,但是返回的是相同的 用户实体类,在
GetAllUsers_For_PageA 的情况下 Email 为 null 值

GetAllUsers_For_PageB的情况下 Email 不为null值
在这种情况下,你又如何在文档中解释 用户实体类 的 Email 属性在什么情况下是 null ,什么情况下是非 null ,这个同样很奇怪..
请问大家,你们平时怎么处理此类情况?多谢
一直很困惑这样的问题,请大家耐心指教。。 问题补充:期待更多其它的方案。。。 Free.Wong | 初学一级 | 园豆: 20
提问于:2019-05-06 23:20 显示帮助
使用"Ctrl+Enter"可进行快捷提交,评论支持部分 Markdown 语法:[link](http://example.com) _italic_ **bold** `code`。
< > 分享
分享您的问题
所有回答(1) 0 三个方法,对应三个自定义model ,不同方法返回不同的model。就不会有null的情况了。 默卿 | 园豆:4551 (老鸟四级) | 2019-05-07 09:58 不允许自建model的话就返回JSON字符串,让调用的人去转对象。 支持( 0 ) 反对( 0 ) 默卿 | 园豆:4551 (老鸟四级) | 2019-05-07 09:59 是的,的确可以满足,也有明显的不足,就是model (实体) 太多,而且命名是个大问题。。你们平时具体工作中如何做的?感激。 支持( 0 ) 反对( 0 ) Free.Wong | 园豆:20 (初学一级) | 2019-05-07 10:09 @heywap: 这个没有标准答案,都有优点和弊端,实际上字段不多冗余就冗余,没太大问题的,数据量大的场景一般都会有分页,分页以后null几个字段没啥问题。一般占资源的是列用不上,但是里面存了很多文本信息,这样才占资源。不喜欢null着的话就多建几个model,命名确实是个问题,考验对业务的熟练度和语文功底了,这点我帮不上你。 支持( 0 ) 反对( 0 ) 默卿 | 园豆:4551 (老鸟四级) | 2019-05-07 10:20 @heywap: 我们的项目里,按业务分model,但也不会分得很细,会存在字段null的时候,但是无伤大雅。 支持( 0 ) 反对( 0 ) 默卿 | 园豆:4551 (老鸟四级) | 2019-05-07 10:21 @默卿: 感谢你分享你的经验。。多谢。 支持( 0 ) 反对( 0 ) Free.Wong | 园豆:20 (初学一级) | 2019-05-07 13:32 编辑文本 预览 上传图片
Ctrl+Enter键快速提交
清除回答草稿
您需要 登录 以后才能回答,未注册用户请先 注册 。

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行