当前位置:网站首页 / C#人爱学不学 / 正文

AY写给国人的ASP.NET Core2教程【1/30】

时间:2017年11月16日 | 作者 : aaronyang | 分类 : C#人爱学不学 | 浏览: 481次 | 评论 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 中,选择“文件”菜单 >“新建” > “项目”

blob.png

blob.png

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

blob.png

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

blob.png

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; }



    }
}

blob.png

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

====================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

blob.png

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运行项目

返回一个列表类型的

blob.png

根据ID查询的

blob.png



新增一个学生

        [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/

blob.png

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

blob.png

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

blob.png

点击下方的Headers,查看

blob.png

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

blob.png

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


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

从新 新增上次那条数据

然后查看列表

blob.png

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

blob.png

再次查看列表

blob.png


操作删除

        [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();
        }

我们先新增一个

blob.png

列表查看

blob.png

删除1

blob.png

查看列表

blob.png



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

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






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

猜你喜欢

已有1位网友发表了看法:

1#十年  2017-11-16 17:25:40 回复该评论

前来膜拜AY大牛的文章

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

作者:杨洋(AaronYang简称AY,安徽六安人)

时间:2015年1月17日,高中学历,兴趣学习研究WPF

声明:AYUI开发与商用免费,源码可购买。部分DEMO不免费

开源不是责任,合理的收入可以维护项目的发展和服务器和域名的费用。非客户加好友不提供技术服务

查看捐款记录

AYUI7.X MVC教程 更新如下:

2017-10-29 第一课
2017-10-30 第二课

AYUI程序加密教程教程下载

兼容:XP到win10,vs2015,2017

最新版本:AYUI 7.5

一次购买,免费更新,bug及时修复,AY一人开发,普通话沟通问题。3个月技术支持

AYUI7.5 DLL企业服务详情:650元

AYUI7.5.X 官方风格全源码详情:4000元

AYUI7.5.X 医疗+官方风格全源码详情:5000元

本AYUI知识版权最终归杨洋(AY)所有

本AYUI最终销售权归杨洋(AY)所有

WPF群 WPF UI之美     联系AY: 点击这里给我发消息

  AY的WPF视频
  AYUI 版本说明

vs2015 企业版密钥HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

vs2017 企业版密钥NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

标签列表