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

简介: 背景: 两个实体类:租房图片、售房图片 这两个表用于存储房源图片记录,一个房源对应多个图片,两个表的差别就在于一个业务关联字段。 租房图片中的RentID记录这个图片属于哪个租房信息; 售房图片中的SaleID记录这个图片属于哪个售房信息。

背景:

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

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

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

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

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

 

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

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

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

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

 

先来看看这两个实体类

HZ(`6S)[@XA`7(G52XICO2V 4~P2`95HG[NH}Q$@02M`%PV

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

 

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

$Y%A1CR697UA67[`WWRKJ88

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

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

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

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

 

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

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

NN`ZDJSY(FCF]N%~R%$1HST

J(S`U{DBNSE{PP`L]XNEI(F

 

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

7Q4O)MQ2Z%`Z8~(E`29BRCP

 

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

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

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

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

 

好了,结束了!

我不相信神话,我只相信汗水!我不相信命运,我只相信双手!
相关文章
|
3月前
|
C#
.NET开发中合理使用对象映射库,简化和提高工作效率
.NET开发中合理使用对象映射库,简化和提高工作效率
|
XML 数据格式
Revit两种外部接口的插件注册文件addin
Revit两种外部接口的插件注册文件addin
|
存储 NoSQL Unix
基于C#的ArcEngine二次开发50:MDB创建新要素类及“无当前记录”异常处理
基于C#的ArcEngine二次开发50:MDB创建新要素类及“无当前记录”异常处理
基于C#的ArcEngine二次开发50:MDB创建新要素类及“无当前记录”异常处理
|
jenkins 测试技术 持续交付
python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)
上一篇已经给大家都介绍过了流程类接口关联,但是由于博客的登录机制改变,所以没有办法给小伙伴们实战演练一下,那么这篇就按照上一篇计划的用jenkins来给小伙伴们演示一下流程类接口的封装和调用,其实很简单,就是用上一篇和前边这篇传送门的代码稍稍修改即可。不知道你自己练习了么,如果练习了,可以看看和我有什么不同,没练习的看看自己思路和我有啥不一样。好了废话少说进入主题
177 0
python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)
导入其他包,轻松实现跨包调用 | 带你学《Java面向对象编程》之六十八
本节为读者介绍了不同的包之间如何调用其内的类-使用import导入其他包内容。
【小试身手】几个自定义控件的组合应用,实现简单的“增删改查”功能(有源码)
     分页控件、查询控件、显示数据的控件和表单控件,终于把这几个控件结合在一起了,和在一起之后就可以让“增删改查”变的非常的简单和容易了,当然还需要数据访问函数库的支持。      综合演示的IDE是 vs2008,.net Framework2.0,C#, B/S 。
1023 0