Author Image

admin

2周前 79

Razor Pages-搭建三层架构创建可重复使用的数据访问项目

导航:

在本视频中,我们将讨论如何创建可重用的数据访问类库项目。然后可以将该项目与 Razor Pages的Web应用程序,Windows应用程序,Web API等重复使用。它可以跨平台工作。

创建.Net标准类库项目

在解决方案资源管理器中,右键单击解决方案,然后选择“ 添加”>“新建项目” 5-1

项目的名称。由于该项目将包含数据访问服务,因此将其命名为YoYoMooc.StudentManagement.Services,最终创建一个独立的类库。

添加项目引用

我们现在需要创建他们的引用关联关系,添加的类库项目(YoYoMooc.StudentManagement.Services)需要使用(YoYoMooc.StudentManagement.Models)类库中定义的类型(MajorEnum)。因此,我们需要将YoYoMooc.StudentManagement.Models类库,引用到YoYoMooc.StudentManagement.Services中。

以下是步骤。

右键单击YoYoMooc.StudentManagement.Services项目,然后选择“ 添加”>“引用”。

在“引用管理器”窗口中,单击“ 项目”选项卡。从列表中选择YoYoMooc.StudentManagement.Models项目,然后单击“确定”。 5-1

在解决方案资源管理器中,您将看到YoYoMooc.StudentManagement.Models项目列为项目依赖项 。

5-1

在项目文件(YoYoMooc.StudentManagement.Services.csproj)中,您将看到YoYoMooc.StudentManagement.Models作为项目参考。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference Include="..\YoYoMooc.StudentManagement.Models\YoYoMooc.StudentManagement.Models.csproj" />
  </ItemGroup>

</Project>


IStudentRepository 接口

我们将使用以下IStudentRepository接口进行数据访问。这个接口允许我们使用依赖注入。如果您不熟悉依赖项注入的概念,请查阅ASP.NET Core MVC教程的第19部分,该教程适用于初学者。

using YoYoMooc.StudentManagement.Models;
using System.Collections.Generic;

namespace YoYoMooc.StudentManagement.Services
{
    public interface IStudentRepository
    {
        IEnumerable<Student> GetAllStudents();
    }
}


MockStudentRepository 类库

目前,我们已在应用程序代码中对学生数据进行了硬编码。我们将在即将到来的视频中讨论如何从MySql 数据库查询学生数据。

using YoYoMooc.StudentManagement.Models;
using System.Collections.Generic;

namespace YoYoMooc.StudentManagement.Services
{
   public class MockStudentRepository : IStudentRepository
    {
        private List<Student> _studentList;

        public MockStudentRepository()
        {
            _studentList = new List<Student>()
            {
                 new Student() { Id = 1, Name = "张三", Major = MajorEnum.ComputerScience, Email = "Tony-zhang@52abp.com" },
            new Student() { Id = 2, Name = "李四", Major = MajorEnum.ElectronicCommerce, Email = "lisi@52abp.com" },
            new Student() { Id = 3, Name = "王二麻子", Major = MajorEnum.Mathematics, Email = "wang@52abp.com" },

            };
        }

        public IEnumerable<Student> GetAllStudents()
        {
            return _studentList;
        }
    }
}