前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NewLife.XCode中如何借助分部抽象多个具有很多共同字段的实体类

NewLife.XCode中如何借助分部抽象多个具有很多共同字段的实体类

作者头像
大石头
发布2018-01-09 16:31:23
2.1K0
发布2018-01-09 16:31:23
举报
文章被收录于专栏:智能大石头智能大石头

背景:

两个实体类:租房图片、售房图片

这两个表用于存储房源图片记录,一个房源对应多个图片,两个表的差别就在于一个业务关联字段。

租房图片中的RentID记录这个图片属于哪个租房信息;

售房图片中的SaleID记录这个图片属于哪个售房信息。

声明:这是二次开发,表结构不是我设计的。

因为两个实体类的操作极为相似,我们可以提取出来一个接口,进行统一操作。这里只有两个实体类,可能优势不明显,但如果有八个十个呢?

现在XCoder新模版(2012年3月以后)生成的实体类都是分部类,都对应有一个分部实体接口。

由于XCode是充血模型,我们可以为这两个实体类做一个统一的基类来达到我的目的,但是这个统一的基类里面无法访问子类的字段,编码上很不方便。

这一次,我们用分部接口!

先来看看这两个实体类

image.png
image.png

这两个实体类,就RentID和SaleID字段的不同,其它都一样,包括名字、类型、业务意义。

我们新建一个接口,然后借助分部接口来统一

image.png
image.png

如上,通过分部接口,我们无需修改原有的接口文件,即可实现给接口多增加一个继承。

实际上也不应该修改原有的接口文件,因为原有的接口位于实体类的数据类文件中,那是随时会被新的代码生成覆盖。

IHouseImage接口里面的属性,是从IRentimage里面拷贝过来,然后删掉RentID

如果不要那个BizID,那么我们的工作就算完成了,不需要对原有的实体类代码进行任何修改。

只是还有一点遗憾,不能通过接口操作RentID和SaleID。

我们来扩展一下,增加一个BizID属性来统一它们,因为两个实体类都没有这个属性的实现,所以我们需要在实体类业务文件那里手工增加实现。

image.png
image.png
image.png
image.png

大功告成!我们看看怎么用它们。

image.png
image.png

如上,根据不同的类型,创建实体操作者eop。我这里的类型是硬编码,也可以根据业务情况采用别的方式得到类型。

实体操作者eop表现了事务管理、创建实体entity的操作。

实体entity是IEntity类型,可以进行添删改等操作。这里为了实体接口的精简和独立,实体接口并没有继承IEntity,实际上实体类都继承了这两个接口。

所以,我们可以先转为IHouseImage接口,然后随意操作,当然你也可以在接口中增加各种方法。

好了,结束了!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012-04-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档