在探讨系统重构的代码结构组织以前,先初步考虑框架与数据库的交互,在.net平台上数据访问方案有人总结为三类:DataSet、ADO.net 2.0、ORM组件。我只熟悉ADO.NET方式,众多的企业特性(如链接池、缓存等)均自行写代码实现,在这次重构时,我固然能够直接将原来的数据访问方案直接搬过来在Model中实现与数据层的交互,但既然考虑重构,为什么不尝试一下新的ORM呢,在起初我考虑HNibernate框架的,但我在2008年的一个全国应用范围的项目中见过开发团队用Entity Framework做为数据层访问方案,一直对此方案比较好奇,因此这里采用Entity Framework 6.0.1
again, 对此有选择性障碍的人,中止寻找银弹吧,好比Entity Framework框架讨论不少的运行性能问题,我认为可用空间换时间的思路(比较粗暴的说法:硬件空间换响应时间。固然不是这样简单的概念,这里我我的喜欢这样概述此思路而已)来解决,不用钻牛角尖太深。
EF有三种方式(three ways)着手:Database First、Model First、Code First,通俗的话来讲:数据库
一般分工明确的项目团队中,设计人员用ORM工具(好比我习惯用PowerDesigner)完成数据库结构的设计,而后交给开发人员进行逻辑代码的开发。 for me, 这部分工做已经完成了,整个后台管理平台的数据结构乖乖的列在数据库中了,看起来我可用Database First方式着手。
这里顺便想提一句Code First方式,这令我回想起早几年的技术销售(TS)的工做,这个角色的工做中涉及的POC要求一个快字,Code First简直就是为快而生的,用户POC需求拿到后,直接进入代码编写业务逻辑,不用花时间在数据层的处理上,最重要的是POC成功后,即便要将POC直接转化到生产环境也是可行的。缓存
Code First方式简单的开发流程可归纳以下:数据结构
开发流程的核心基本就是如此,中间涉及的各类规则可参阅这里,包括数据库链接字符串规则、Entity关联规则、甚至你能够自定义规则mvc
一句话小结三种方式的选择:Code First适合作演示系统,不少东西不用费时间考虑,Database First显然适合导入现有的数据结构,从头实施大型项目仍是以模型先着手,完整的模型视图有利于理清各个对象间的关系。app
肯定了asp.net mvc + EF 后,接下来如何进行呢?对我来讲,涉及的新技术好多哦,系统的学习是不可能的,我决定采起这样的方式进行:搜集asp.net mvc的最佳实践经验,以此为基础来展开本次重构,整体来说从如下几个方面着手搜集框架