在当前技术发展极为快速的时代,网站作为企业展示的一个重要门户,应该具备高可用、高并发、易维护、易扩展等特点。在这样的背景下,常见的.Net开源框架MVC以及ORM框架EF,成为了众多企业网站开发的首选。
1. MVC架构及概念
MVC 是一种架构模式,将应用程序分为三个核心部分:模型(Model),视图(View)和控制器(Controller)。在MVC模式中,模型表示应用程序的数据和业务逻辑,视图表示用户界面,控制器处理用户事件。MVC 可以确保高度的可扩展性、高并发访问以及强大的自由度。
MVC 模式中三个部分的作用如下:
1. 模型:模型表示应用程序的数据和业务逻辑。任何时候,模型的状态都能反映到视图上。
2. 视图:视图表示数据的可视化。在MVC模式中,视图知道模型,但模型不知道视图。视图通过事件处理程序或回调机制与控制器通信以对用户的输入作出响应。
3. 控制器:控制器管理应用程序的流程。在MVC模式中,控制器知道模型和视图,并将其连接起来。控制器通过事件处理程序或回调机制与模型和视图通信,以响应用户的输入。
2. EF框架及概念
实体框架(Entity Framework) 是.NET Framework的一个开源对象关系映射(ORM)框架。它允许.NET 开发人员通过 LINQ(Language-Integrated Query,一种数据访问语言) 或实体 SQL 实现数据访问。实体框架支持多种数据库引擎,其中包括 SQL Server、MySQL、Oracle 等。
实体框架的核心是上下文(DbContext),上下文表示应用程序与数据库之间的连接。下文中的 EF 代表 Entity Framework。
EF 操作流程:
1. 定义上下文和实体类
2. 使用上下文对象进行增删改查操作
3. MSSQL数据库及概念
MSSQL数据库是一种关系型数据库,能够高效、稳定地储存数据,支持跨平台操作。在.Net开发领域,使用MSSQL数据库的案例非常多。
使用MSSQL数据库的主要流程如下:
1. 创建数据库和表
2. 使用SQL语句进行增删改查操作
3. 在应用程序中使用ADO.NET来操作数据库
4. 基于EF框架、MVC架构以及MSSQL数据库的网站搭建
基于EF框架、MVC架构,以及MSSQL数据库搭建网站,需要进行如下步骤:
4.1 配置VS工具
打开VS,选择文件->新建->项目,选择ASP.NET Web 应用程序(.NET Framework),Web应用程序模板选择MVC。
选择添加数据库,选择MSSQL,选择新建Connect按钮,在新建数据源窗口中输入数据源名称,选择数据源下的数据信息;然后到解决方案右键选择名称->添加->新建项。选择“数据”分类下的ADO.NET 实体数据模型,并将其命名为Model,选择包含所需数据库上下文类的实体框架。
4.2 创建模型层
自动创建的Model文件夹中的IdentityModels.cs文件是关于用户身份认证的模型层。要添加我们自己的数据库上下文,需要在该文件中添加我们自己的类。我们需要在“IdentityModels.cs”中添加以下代码[[1]]:
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public DbSet UserProfiles { get; set; }
}
以上代码向我们的数据实体上下文添加了一个表。我们可以使用ASP.NET Identity自动创建的驱动器进行用户身份验证功能。DbContext是在EntityFramework.dll中定义的。添加引用以获得上下文类型。该文件应如下所示[[3]]:
using Microsoft.AspNet.Identity.EntityFramework;
using System.Data.Entity;
namespace WebApplication1.Models
{
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public DbSet UserProfiles { get; set; }
}
}
4.3 创建控制器
为了使模型层与视图层更好地交互,需要在更高的逻辑层上把业务逻辑分解开。我们需要在“Controllers”文件夹中添加一个控制器类,用于执行从页面到底层模型的数据,这里我们可以继承System.Web.Mvc的Controller类[[2]]。
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
做这些之后,我们就可以编写视图了。新建一个View文件夹来装视图模板。
4.4 创建视图
视图将网站的所有HTML(包括CSS)和javascript组成页面。我们可以在“View”文件夹中创建一个HTML文件来用作我们的“首页”。首先,我们需要将我们的HomeController类连接到HomePage视图中。
public class HomeController : Controller
{
public ActionResult HomePage()
{
ViewBag.Message = "欢迎使用MVC5!";
return View();
}
}
创建HomePage.cshtml视图页面。如下代码所示,使用HTML标记创建了一个简单的欢迎页面[[4]]:
<@{
ViewBag.Title = "HomePage";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@ViewBag.Message
欢迎使用 MVC 5
为了访问视图,我们需要在“global.asax.cs”文件中将“RouteConfig”类中路由的默认控制器与索引/主页文件连接起来。即:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "HomePage", id = UrlParameter.Optional }
);
}
}
4.5 使用MSSQL数据库进行开发
创建好网站的各个部分后,开始在MSSQL数据库中对数据进行CURD操作。
在VS中添加服务器连接,连接至MSSQL服务后打开工具->可用工具->新建查找项,新建一个数据库。
再访问“服务器资源管理器”,选择打开查找选项,输入我们刚才新建的数据库名称,即可看到我们新建的数据库。展开该数据库,右键选择“新建”-> “表”,创建人员信息表。其表结构如下所示:
CREATE TABLE [dbo].[Person] (
[PersonID] INT IDENTITY (1, 1) NOT NULL,
[LastName] VARCHAR (50) NULL,
[FirstName] VARCHAR (50) NULL,
[BirthDate] DATE NULL,
PRIMARY KEY CLUSTERED ([PersonID] ASC)
);
对于查询、添加、删除以及更新数据基本的SQL语句:
INSERT INTO Person (LastName, FirstName, BirthDate) VALUES ('Jobs', 'Steve', '2000-1-1');
DELETE FROM Person WHERE PersonID = 1;
UPDATE Person SET LastName = 'Gates' WHERE PersonID = 2;
SELECT * FROM Person WHERE LastName = 'Jobs';
MSSQL数据库操作难度较高,但在学会后可实现更为复杂的功能。
4.6 测试网站
当我们按照上述步骤除了所有操作后,我们现在可以通过浏览器进行测试。在 Visual Studio 中按下F5,启动应用程序,在浏览器中输入“http://localhost:端口号”即可看到我们刚才所编写的HomePage视图。
总结
在本篇文章中,我们介绍了MVC架构及其概念,EF框架及概念以及MSSQL数据库及概念。我们具体介绍了如何利用MVC架构和EF框架搭建Web应用程序,以及如何使用MSSQL数据库进行CURD操作。本文只是浅显的介绍,实际开发中还有许多的问题需要解决。但是,只要在实践中不断学习总结,就一定能做出符合各种需求的优秀Web全栈应用程序。