在软件开发过程中,采用分层架构是一种常见的设计方法,它有助于将应用程序的不同部分分离开来,从而提高代码的可维护性和可扩展性。本文将介绍如何使用Visual Studio创建项目,并实现MVC(Model-View-Controller)模式下的分层架构,包括业务对象层(BOL)、业务逻辑层(BLL)和数据访问层(DAL)的创建和设计。
首先,需要在Visual Studio中创建一个新的项目。以"LinkHubUI"为项目名,选择空项目,并勾选MVC选项。接下来,将添加一个文本文件,命名为"ToDoList.txt",用于记录需要完成的任务列表。这是一个逐步实现分层架构的过程,将从创建解决方案和所有项目开始。
在项目架构中,用户界面(UI)与业务逻辑层(BLL)和业务对象层(BOL)进行交互。因此,需要在UI项目中添加BLL.dll和BOL.dll的引用。BLL层与BOL层和DAL层交互,所以需要在BLL项目中添加BOL.dll和DAL.dll的引用。DAL层与BOL层交互,因此需要在DAL项目中添加BOL.dll的引用。需要注意的是,如果尝试为DAL添加BLL.dll的引用,将会出现循环依赖的错误。因此,应该按照架构从左到右添加引用,即从左侧层开始,查看它与右侧的哪一层交互,并添加相应的DLL以及位于顶部的公共对象层。保存所有更改并重建解决方案。
接下来,将创建业务对象层(BOL)。BOL实际上是数据库表的类形式的副本。对于数据库中的一个表,需要在BOL中有一个对应的类。例如,如果有一个名为"tbl_Department"的表,它包含"Did"(部门ID)、"DName"(部门名称)和"Description"等列,将为"tbl_Department"创建一个等效的类,其属性类型分别为int和string。这就是关系、对象和映射(ORM或OR映射)在BOL中的实现。
使用Entity Framework,可以自动生成这些类。例如,对于"tbl_Department"和"tbl_Employee"表,如果一个部门可以包含多个员工,将创建一个"tbl_Department"类,并在该类中添加一个"tbl_Employee"的列表属性。同样,"tbl_Employee"类将包含一个"tbl_Department"对象的属性,表示每个员工都属于特定的部门。对于多对多关系,例如"Student"和"Course",一个学生可以选择多个课程,一个课程也可以被多个学生选择。在这种情况下,需要一个额外的类来表示"tbl_Student"和"tbl_Course"之间的多对多关系,即"tbl_Student_Course"。
在BOL项目中,右键点击并选择"添加新项",选择"ADO.NET实体模型"并命名为"LinkHubModel.edmx"。选择"从数据库生成模型",点击"下一步"。点击"新建连接",设置连接并选择数据库,然后点击"下一步"。选择"Entity Framework 6"并点击"下一步"。现在选择所有表,可以看到模型命名空间是"LinkHubDbModel",然后点击"完成"。可能会看到两次安全警告,点击"确定"。现在,可以观察到它为每个表生成的类。
例如,对于"tbl_Category",它生成了属性"CategoryId"、"CategoryName"和"CategoryDesc"。由于一个类别包含多个URL,得到了"tbl_Url"的列表。对于"tbl_User",生成了属性"UserId"、"UserEmail"、"Password"和"Role"。一个用户可以上传多个URL,因此有一个URL的列表。对于"tbl_Url"类,它有属性"UrlId"、"UrlTitle"、"Url"、"UrlDesc"等。由于每个URL都属于特定的类别,并且由特定的用户上传,所以它遵循之前学到的相同规则。