ASP.NET MVC框架中的数据库技术分析
2016-01-28童钰
童 钰
(湖北师范学院 计算机科学与技术学院,湖北 黄石 435002)
ASP.NET MVC框架中的数据库技术分析
童钰
(湖北师范学院 计算机科学与技术学院,湖北 黄石435002)
摘要:微软推出的Visual Studio开发平台以其完善的开发机制、庞大的类库以及在数据库交互方面强大的功能吸引着众多的开发人员的使用。而在VS2010之后的平台版本中由于整合了ASP.NET MVC项目模版,这使得开发人员可以通过该模板的自动创建功能很方便的完成一个开发项目的大部分工作。这样的做法无疑能够让开发人员可以快速地完成一个开发项目,但是却并不能深入了解项目的构造和运行机制,所以只有进一步分析MVC核心的技术才能使我们更好地提高项目的质量和可维护性。
关键词:MVC; ORM; 数据库
中图分类号:TP311.5
文献标识码:A
文章编号:1009-2714(2015)04- 0025- 04
doi:10.3969/j.issn.1009-2714.2015.04.006
收稿日期:2015—08—12
作者简介:童钰(1977—),男,湖北黄石人,讲师,硕士.
1MVC概述以及ASP.NET MVC
1.1 MVC概述
MVC最早是在1979年由现挪威奥斯陆大学教授Trygve Reenskaug 提出的,并应用于当时广泛使用的程序设计语言Smalltalk中,其主要目的就在于简化软件开发的复杂度,以一种概念简单却又权责分明的架构来撰写更模块化,可维护性更高的程序代码。因此,MVC并不是一种程序语言,而是开发时所使用的一种“框架”(架构)。MVC框架中使软件开发分为三个主要单元:Model(模型)、View(视图)、Controller(控制器),其定义和之间的关系如图1:
图1 MVC定义及关系图
1.2 ASP.NET MVC
在MVC中有一个非常重要的概念“关注分离点”(Separation Of Concerns),就是指你在项目开发时可以只关注当前的对象,不用担心受到同项目中其它对象的干扰。微软长久以来致力于发展开发工具,希望能降低开发上的负担,因此基于MVC这种优秀的软件开发架构微软推出了ASP.NET MVC,并且从第一版以来ASP.NET MVC就以微软公众授权开放源代码,同时ASP.NET MVC最大的优势就是可以通过Visual Studio这个庞大的开发平台来进行项目开发,而且ASP.NET MVC拥有非常清楚的关注分离点架构。所以,ASP.NET MVC既拥有MVC优秀的架构又可以使用Visual Studio来建立、调试、维护开发项目,这使得对Visual Studio比较熟悉的人可以更容易分析和掌握ASP.NET MVC的核心技术。
2ASP.NET MVC中的数据处理
一个开发应用程序的项目中,数据的处理是最基础也是最核心的内容,ASP.NET MVC也不例外。
首先我们要明确的一点是在ASP.NET MVC中,Model负责所有与数据有关的工作,例如:新增、删除、更改、查询等,同时Model的独立性非常高,所以它可以更好的专注于如何有效地提供数据访问机制、数据格式验证、商业逻辑验证等工作。
其次,当我们创建好数据模型,初次运行应用程序项目后ASP.NET MVC将会自动在对应的APP_Data目录下产生一组默认的数据库文档(*.mdf或*.ldf),文档的命名规则为aspnet-项目名称-日期时间.mdf,而整个项目的数据处理就是对这些数据文档的处理。
图2 Model文件夹以及APP_Data文件夹
3如何在ASP.NET MVC下开发数据层
微软的开发工具一向功能强大,这可以极大地降低项目开发上的负担,但在开发过程中却造成了开发人员过度依赖开发工具,反而降低了对数据库原理、网络原理、面向对象程序设计等基础知识的学习欲望。所以,充分掌握ASP.NET MVC下的数据库构成方式和技术特点并且能够适当调整ASP.NET MVC自动生成的项目框架才能最终得到符合开发者需求的软件。
由于ASP.NET MVC还是基于面向对象的程序设计,因此在Model层上最好采用ORM(Object Relational Mapping)信息访问技术来开发。ORM可以将结构化的关系型数据库映射成面向对象模型,在ASP.NET MVC中的具体体现也就是Entity Framework。在选择采用了Entity Framework还是其它ORM开发技术后,根据项目的不同情况我们可以使用以下三种不同的数据库开发模式来进行数据库的开发:
1)数据库优先开发模式
数据库优先开发就是先进行数据库设计,以数据库里定义的数据结构为主体和依据来进行应用程序的开发.
2)模型优先开发模式
模型优先开发模式是指在ORM架构中先创建对象模型,应用程序的开发则依据这些对象模型,当要访问数据库时(在ASP.NET MVC中)通过Entity Framework数据提供者的协助就可以自动生成对应的SQL语句并创建完整的数据库。
3)程序代码优先开发模式(Code first)
这是一种比较新颖的开发模式,它是让开发人员直接根据项目需求先写出相关的类和属性代码也就是应用程序所需要用到的数据模型,然后通过ORM框架的管理再转换为实体模型。这种方法可以避免因为开发人员对数据库操作不熟悉而导致开发效率降低。
在当前较新版本的Visual Studio开发环境中ASP.NET MVC和Entity Framework都已经升级到第五版本,它们尤其强化了程序代码优先的开发模式。
图3 创建数据模型的代码
如图3所示,这是一段创建留言板用户信息数据模型的代码,当代码正确运行后这段程序将会在数据库中创建一个名为UserInfo的表格,这就和在数据库开发平台下创建数据表是一样的。当所有项目当中的要用到的数据模型都创建完毕,实际也就意味着我们已经完成了项目数据库的建立。
4ASP.NET MVC下的Code first数据库开发后的数据迁移问题
在使用Code first生成数据库后当数据库发生更改时,运行程序就会出现数据已更改的问题,这时可以删除数据库重新生成解决但是之前的数据就无法保留,为了保留之前的数据库数据,我们需要使用到Code first数据迁移。
首先,如果需要更改数据结构,必须是先更改Model类,然后使用Code firs数据迁移,如果直接先更改了数据库则使用数据迁移会报错。
其次,如果在项目中我们只是引用的EF5.0(Entity Framework5)就不能达到直接安装EF5的效果同样无法完成数据迁移,这时我们就需要先安装EF5.0执行此命令“Install-Package EntityFramework-Version 5.0.0”安装EF5.0,安装后Model类下会出现packages.config(如图4)。现在我们就可以正常地开始操作数据迁移了。首先执行命令:Enable-MigrationsContextTypeName MovieDBContext 开启Code First迁移。
图4 安装EF5.0生成packages.config文件
5结语
虽然通过使用ASP.NET MVC可以自动完成项目的大部分工作,极大地降低开发人员的工作负担,但对于整个ASP.NET MVC中最关键的一个部分Model来说,如果我们没有清晰的认识它是如何在ASP.NET MVC中运作的,不能很好地对它进行规划,我们也就没有办法做出一个好的ASP.NET MVC项目。
参考文献:
[1]李园,陈世平.MVC设计模式在ASP.NET平台中的应用[J].计算机工程与设计,2009,13:3180~3184.
[2]蒋金楠.ASP.NET MVC4框架揭秘[M].北京: 电子工业出版社,2013.
[3]甄镭.NET与设计模式[M].北京:电子工业出版被,2005.
[4]黎永良,禚杜武.MVC设计模式的改进与应用[J].计算机工程,2005,31(9):96~98.
[5]赵增敏,吴洁,唐惠康.基于Code First模式的ASP.NET MVC应用开发[J].制造业自动化,2012, 34(6):154 ~156.
[6]孙高毅. 基于.NET的ASP.NET MVC框架研究[D].长沙:中南大学,2009.
[7]吴亚军.试析ASP.NET的MVC开发模式 [J].电脑编程技巧与维护,2011(14):77~78.
[8]陈晓丹,郑 毅.ASP.NET开发环境下的WebForm与MVC设计模式[J].武汉工程职业技术学院学报,2009,(06).doi:10.3969/j.issn.1671-3524.2009.02.011.
Analysis of database technology in MVC ASP.NET framework
TONG Yu
(The College of Computer Science and Technology, Hubei Normal University, Huangshi435000)
Abstract:Microsoft launched the Studio Visual development platform to its sound development mechanism, a large class library and in the database to interact with powerful features to attract a large number of developers use. And in the platform version of VS2010 after the integration of the MVC ASP.NET project template, which allows developers to automatically create a function through the template to complete a large part of the development project. Such an approach will undoubtedly allow developers to quickly complete a development project, but it can not be in-depth understanding of the project's structure and operation mechanism, so only the further analysis of MVC core technology to improve the quality and maintainability of the project.
Key words:MVC; ORM; DataBase