06年底的时候,关于UDT的结构和其他的一些问题,和Sebastian Leupold通过邮件,因为当时费了很大的劲才弄明白数据到底是怎么给弄出来的,DotNetNuke里面像这么难懂的代码还是不太多的,我的建议是把 UDT的数据结构稍微改一下,弄成让大家更舒服一点的,不过估计是大家交流上还是有点障碍,毕竟E文都不是母语(SL是德国佬);后来想:算了,还是自己弄吧,于是从这个数据结构出发,把它给优化了一下,成了我的数据结构,希望不会让大家觉得太烂。
首先再贴一张图,分析一下UserDefinedTable的情况
(原来的数据结构存储)
我把三张表的数据弄到一块了,这样大家可以看得更清楚一点。上图中可以看到,UserDefinedFields是一个字段定义器存放的数据,比如我们的字段名称、初始值、顺序等,这个表可以理解为一个“结构表”;而下面的UserDefinedRows是“主记录表 ”,UserDefinedData是“从记录表”。我们的表格结构是存放在Fields表里面的,而所有的表格内容,都是存放在Rows和Data这两张表中的。
大家可以看到,UserDefinedRows这张表只有两个字段,其实,除了几乎每个用户开发模块都有的ModuleId(是为了在不同的模块中显示不同的数据),那么,就只有一个字段,也就是UserDefinedRowID,这张表太浪费了!
而我们再回头想一下我们通常使用的列表/窗体,其实,对于“列表/窗体”这种模式来说,显示在列表上的必然只是有限的几个字段而已,而大量的字段,是不需要显示在列表上的,所以,我们的改造就是,把需要在列表上显示的,尽量的放在UserDefinedRows这张表中,那么,其实,我们读取数据的时候,就不需要弄那么复杂的LEFT JOIN,也不需要在内存中动态生成DataTable了,这种方式,当然是可以大大提高执行效率的。改进后的数据结构,可能是如下图所示的:
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!