65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET Core, WEB API 和 Repository 类

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.73/5 (8投票s)

2016年11月16日

CPOL

3分钟阅读

viewsIcon

26288

downloadIcon

381

在本文中,我们将详细了解如何在 WEB API 中使用 Repository 模式创建 ASP.NET Core。

引言

本文展示了如何在 WEB API 中使用 Repository 模式创建 ASP.NET Core。

WEB API

Web API 是一种为浏览器和移动设备构建 HTTP 服务的简单易用的方法。 它有以下四种方法:Get/Post/PutDelete,其中

  • Get 用于请求数据。 (Select)
  • Post 用于创建数据。 (Insert)
  • Put 用于更新数据。
  • Delete 用于删除数据。

参考链接

Repository 类

Repository 模式允许我们为业务逻辑和数据库操作创建一个新的层。 我们可以使用 repository 来存储我们的数据。 要了解更多关于 repository 的信息,请查看此链接

必备组件

Using the Code

步骤 1:创建我们的 ASP.NET Core 1.0.1 Web 应用程序

安装 Visual Studio 2015 和 ASP.NET Core 1.0.1 后,单击“开始”,然后单击“程序”,并选择“Visual Studio 2015” - 单击“Visual Studio 2015”。 单击“新建”,然后单击“项目”,选择“Web”,然后选择“ASP.NET Core Web 应用程序”。 输入你的项目名称,然后单击“确定”。

接下来选择“WEB API”。 单击“确定”。

步骤 2:创建模块

要首先创建我们的模块类,我们在解决方案项目中创建一个文件夹。

右键单击我们的解决方案 > 单击“添加” > 单击“新建文件夹

将文件夹命名为Models

创建模型类

右键单击 Model 文件夹,添加新类并将其命名为“StudentMasters.cs”。

在此类中,我们声明我们的属性变量。

namespace ASPNETCOREWEBAPI.Models
{
    public class StudentMasters
    {
        public string StdName { get; set; }
        public string Email { get; set; }
        public string Phone { get; set; }
        public string Address { get; set; }
    }
}

步骤 3:Repository 类

创建 Repository 类

在这里,我们创建一个 Repository 类来注入到我们的控制器中。 要创建一个 Repository

右键单击 Models 文件夹,然后单击“添加类”。

将类命名为 IStudentRepository

在这里,我们可以看到我给定的类名以 I 开头,因为这个类我们将用作接口,在这里我们将只声明在我们的 StudentRepository 类中使用的方法。

public interface IStudentRepository
    {
        IEnumerable<StudentMasters> GetAll();
        void Add(StudentMasters info);
    }

在这个接口中,我们只添加了 GetAdd 方法。 在我们的下一篇文章中,我们将详细介绍 CRUD 操作。

创建一个类来实现接口

现在我们在 Models 文件夹中创建另一个类,命名为“StudentRepository”。

在此类中,我们创建方法来获取所有 student 信息并添加 student 信息。

using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace ASPNETCOREWEBAPI.Models
{
    public class StudentRepository: IStudentRepository
    {
        private static ConcurrentDictionary<string, StudentMasters> 
                stdMaster = new ConcurrentDictionary<string, StudentMasters>();

        public StudentRepository()
        {
            Add(new StudentMasters
            {
                StdName = "Shanu",
                Phone = "+821039120700",
                Email = "syedshanumcain@gmail.com",
                Address = "Seoul,Korea"
            });
        }

        public IEnumerable<StudentMasters> GetAll()
        {
            return stdMaster.Values;
        }

        public void Add(StudentMasters studentInfo)
        {
            stdMaster[studentInfo.StdName] = studentInfo;
        }
    }

在配置服务中添加 Repository 类

为了将我们的 repository 注入到控制器中,我们需要使用依赖注入容器注册 repository 类。

要了解什么是依赖注入 (DI),请查看此链接

从我们的解决方案项目中打开 Startup.cs 文件

首先,我们添加 using 以导入我们的 Models 文件夹

using ASPNETCOREWEBAPI.Models;

接下来,我们注册我们自己的服务,如下面的代码

services.AddSingleton<IStudentRepository, StudentRepository>();

这样的内容。

// This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();
            services.AddSingleton<IStudentRepository, StudentRepository>();
        }

这是完整的 Startup.cs

步骤 4:创建控制器

右键单击 Controllers 文件夹 > 单击“添加” > 单击“新建项”。

从左侧选择“ASP.NET”> 选择“Web API 控制器类”。

将你的控制器命名为“StudentController.cs”。

默认情况下,我们的 Controller 类将如下所示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

// For more information on enabling Web API for empty projects, 
// visit http://go.microsoft.com/fwlink/?LinkID=397860

namespace ASPNETCOREWEBAPI.Controllers
{
    [Route("api/[controller]")]
    public class StudentController : Controller
    {
        // GET: api/values
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        [HttpGet("{id}")]
        public string Get(int id)
        {
            return "value";
        }

        // POST api/values
        [HttpPost]
        public void Post([FromBody]string value)
        {
        }

        // PUT api/values/5
        [HttpPut("{id}")]
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/values/5
        [HttpDelete("{id}")]
        public void Delete(int id)
        {
        }
    }
}

删除我们控制器中的所有默认方法,并进行更改以添加我们的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

// For more information on enabling Web API for empty projects, 
// visit http://go.microsoft.com/fwlink/?LinkID=397860

namespace ASPNETCOREWEBAPI.Controllers
{
    [Route("api/[controller]")]
    public class StudentController : Controller
    {

}

首先,我们在我们的 controller 类中添加 using

using ASPNETCOREWEBAPI.Models;

接下来,我们将为我们的 Models 创建对象。

[Route("api/[controller]")]
    public class StudentController : Controller
    {
        private List<StudentMasters> _stdInfo;
}

添加示例信息

接下来,我们添加一些示例 student 信息,以便从我们的 WEB API 方法中获取。

[Route("api/[controller]")]
    public class StudentController : Controller
    {
        private List<StudentMasters> _stdInfo;

        public StudentController()
        {
            InitializeData();
        }

//To bind initial Student Information
        private void InitializeData()
        {
            _stdInfo = new List<StudentMasters>();

            var studentInfo1 = new StudentMasters
            {
                StdName = "Shanu",
                Phone = "+821039120700",
                Email = "syedshanumcain@gmail.com",
                Address = "Seoul,Korea"
            };

            var studentInfo2 = new StudentMasters
            {
                StdName = "Afraz",
                Phone = "+821000000700",
                Email = "afraz@gmail.com",
                Address = "Madurai,India"
            };

            var studentInfo3 = new StudentMasters
            {
                StdName = "Afreen",
                Phone = "+821012340700",
                Email = "afreen@gmail.com",
                Address = "Chennai,India"
            };

            _stdInfo.Add(studentInfo1);
            _stdInfo.Add(studentInfo2);
            _stdInfo.Add(studentInfo3);
        }
}

WEB API Get 方法

使用此 get 方法,我们返回所有 student 信息作为 JSON 结果。

[Route("api/[controller]")]
    public class StudentController : Controller
    {
        private List<StudentMasters> _stdInfo;

        public StudentController()
        {
            InitializeData();
        }
        //This will return all Student Information
        [HttpGet]
        public IEnumerable<StudentMasters> GetAll()
        {
            return _stdInfo;
        }
}

这是我们的 controller 类的完整代码,包括添加示例数据和使用 WEB API Get 方法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using ASPNETCOREWEBAPI.Models;
// For more information on enabling Web API for empty projects, 
// visit http://go.microsoft.com/fwlink/?LinkID=397860

namespace ASPNETCOREWEBAPI.Controllers
{
    [Route("api/[controller]")]
    public class StudentController : Controller
    {
        private List<StudentMasters> _stdInfo;

        public StudentController()
        {
            InitializeData();
        }

        //This will return all Student Information
        [HttpGet]
        public IEnumerable<StudentMasters> GetAll()
        {
            return _stdInfo;
        }

        //To bind initial Student Information
        private void InitializeData()
        {
            _stdInfo = new List<StudentMasters>();

            var studentInfo1 = new StudentMasters
            {
                StdName = "Shanu",
                Phone = "+821039120700",
                Email = "syedshanumcain@gmail.com",
                Address = "Seoul,Korea"
            };

            var studentInfo2 = new StudentMasters
            {
                StdName = "Afraz",
                Phone = "+821000000700",
                Email = "afraz@gmail.com",
                Address = "Madurai,India"
            };

            var studentInfo3 = new StudentMasters
            {
                StdName = "Afreen",
                Phone = "+821012340700",
                Email = "afreen@gmail.com",
                Address = "Chennai,India"
            };

            _stdInfo.Add(studentInfo1);
            _stdInfo.Add(studentInfo2);
            _stdInfo.Add(studentInfo3);
        }
    }
}

步骤 5:运行应用程序

要查看结果,请运行应用程序。

当我们运行应用程序时,默认情况下,我们可以看到 values 控制器结果作为 values https://:64764/api/values

将 Values 更改为我们新创建的控制器名称 student “https://:64764/api/student“。

在这里,现在我们可以看到我们添加的所有 student 信息都已显示为 JSON 结果。

历史

  • 2016 年 11 月 17 日:初始版本
© . All rights reserved.