[聚合文章] AY写给国人的ASP.NET Core2教程【1/30】

.Net 2017-11-16 1 阅读

====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========

安装以下组件:

.NET Core 2.0.0 SDK 或更高版本。

已安装 ASP.NET 和 Web 开发工作负载的 Visual Studio 2017 15.3 版或更高版本。

在 Visual Studio 中,选择“文件”菜单 >“新建” > “项目”

点击确定,按下F5      http://localhost:port/api/values

添加文件夹Models,添加类Student.cs

ay刚刚看到 依赖项里面有 EF core了,访问数据库的了,我们新建类,继承它。

Microsoft.EntityFrameworkCore.DbContext

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace AyTestApi.Models
{
    public class AySchoolContext:DbContext
    {
        public AySchoolContext(DbContextOptions<AySchoolContext> options)
            : base(options)
        {
        }

        public DbSet<Student> Students { get; set; }



    }
}

注册上下文,若要将数据库上下文注入到控制器中,需要将它注册到依赖关系注入容器。 使用依赖关系注入的内置支持将数据库上下文注册到服务容器。

====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========

使用以下内容替换 Startup.cs 文件的内容:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using AyTestApi.Models;
using Microsoft.EntityFrameworkCore;

namespace AyTestApi
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<AySchoolContext>(opt => opt.UseInMemoryDatabase("StudentList"));
            services.AddMvc();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseMvc();
        }
    }
}

接下来我们  新建StudentController

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

namespace AyTestApi.Controllers
{
    [Route("api/student")]
    public class StudentController : Controller
    {
        private readonly AySchoolContext _context;

        public StudentController(AySchoolContext context)
        {
            _context = context;

            if (_context.Students.Count() == 0)
            {
                _context.Students.Add(new Student { Name = "杨洋" });
                _context.SaveChanges();
            }
        }
    }

}

默认没有数据时候新增 一个学生。现在我们操作 这个数据

        [HttpGet]
        public IEnumerable<Student> GetAll()
        {
            return _context.Students.ToList();
        }

        [HttpGet("{id}", Name = "GetStudent")]
        public IActionResult GetById(long id)
        {
            var item = _context.Students.FirstOrDefault(t => t.Id == id);
            if (item == null)
            {
                return NotFound();
            }
            return new ObjectResult(item);
        }

其中controll而上的Route特性里的api/后面的student单词,即在控制器类名称中去掉“Controller”后缀。 对于此示例,控制器类名称为“StudentController”,根名称为“student”。 ASP.NET Core 路由不区分大小写

讲解2

[HttpGet("{id}", Name = "GetStudent")]

public IActionResult GetById(long id)

"{id}" 是 student 项 的 ID 的占位符变量。 调用 GetById 时,它会将 URL 中“{id}”的值分配给方法的 id 参数。

Name = "GetStudent" 创建一个命名的路由

讲解3

返回json使用  ObjectResult() 方法,不是asp.net mvc的jsonresult了。

没有错误的话,返回消息是200,Notfound()返回404

====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========

AY:  现在F5运行项目

返回一个列表类型的

根据ID查询的

新增一个学生

        [HttpPost]
        public IActionResult Create([FromBody] Student item)
        {
            if (item == null)
            {
                return BadRequest();
            }
            _context.Students.Add(item);
            _context.SaveChanges();
            return CreatedAtRoute("GetStudent", new { id = item.Id }, item);
        }

CreatedAtRoute 方法返回 201 响应,这是在服务器上创建新资源的 HTTP POST 方法的标准响应。 CreatedAtRoute 还会向响应添加位置标头。 位置标头指定新建的学生的 URI

下载postman 测试 我是64位的: 下载

安装完  https://www.getpostman.com/

F5运行项目,打开postman,按照数字单击,选择。

左侧地址输入 http://localhost:13121/api/Student 然后点击Send

点击下方的Headers,查看

然后在浏览器中 查找id为2的 ,发现数据已经增加进去了。

Update 与 Create 类似,但是使用的是 HTTP PUT。 响应是 204(无内容)。 根据 HTTP 规范,PUT 请求需要客户端发送整个更新的实体,而不仅仅是增量。 若要支持部分更新,请使用 HTTP PATCH

F5 运行项目,打开postman,因为内存数据,所以打开数据应该不见了。

从新 新增上次那条数据

然后查看列表

接下来我们使用postman, 调用update方法,谓词类型换成put,点击send

再次查看列表

操作删除

        [HttpDelete("{id}")]
        public IActionResult Delete(long id)
        {
            var todo = _context.Students.FirstOrDefault(t => t.Id == id);
            if (todo == null)
            {
                return NotFound();
            }

            _context.Students.Remove(todo);
            _context.SaveChanges();
            return new NoContentResult();
        }

我们先新增一个

列表查看

删除1

查看列表

====================www.ayjs.net       杨洋    wpfui.com        ayui      ay  aaronyang=======请不要转载谢谢了。=========

好了,这样asp.net core 2.0算入门了。

推荐您阅读更多有关于“asp.net core,”的文章

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。