从ASP.NET MVC(.NET Framework)开发转为ASP.NET Core MVC(.NET Core)开发需要一个逐步摸索的过程,因为微软为了实现跨平台而重写了所有的dll,而且许多接口方法也都重写了。
我用的是Visual Studio 2019 Enterprise
【1】首先,选择项目类型并创建
【2】选择项目模版(虽然我们开发的是API项目,但是因为模式选择的还是MVC,所以模板还是选择MVC项目)
【3】创建实体类 - using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- namespace core1.Models
- {
- public class User
- {
- public int Id { get; set; }
- public string Username { get; set; }
- public string Phonenumber { get; set; }
- public string Password { get; set; }
- public DateTime CreateTime { get; set; }
- public string Remark { get; set; }
- public string ImageUrl { get; set; }
- public string Feedback { get; set; }
- }
- }
复制代码
【4】创建数据库上下文(注:我的数据库和表是之前已经创建好的) - using Microsoft.EntityFrameworkCore;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- namespace core1.Models
- {
- public class DbEntity : DbContext
- {
- public DbSet<User> Users { get; set; }
- protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
- {
- optionsBuilder.UseSqlServer(@"data source=/*数据库地址*/;initial catalog=/*数据库名称*/;User Id=/*数据库账户名*/;Password=/*数据库密码*/ ");
- }
- }
- }
复制代码
【5】创建Controller
所有创建的Controller都是默认继承ControllerBase,这是所有MVC控制器的基类,经过测试发现不支持重写Dispose方法和Newtonsoft.Json,之后我选择将ControllerBase改为Controller(其实也就是选择了MVCController),完美兼容,在ASP.NET MVC中,我通常使用IHttpActionResult这一数据返回类型返回Json格式数据,但在Core中显然不支持,所以我更换为了IActionResult。
此外,我还将类上方的路径格式从 - [Route("api/[controller]")]
复制代码
改为 - [Route("api/[controller]/[action]")]
复制代码
否则无法访问特定的方法。
完整代码: - using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.EntityFrameworkCore;
- using core1.Models;
- using System.Net.Http;
- using Parttime.Helper;
- namespace core1.Controllers
- {
- [Route("api/[controller]/[action]")]
- [ApiController]
- public class UsersController : Controller
- {
- private DbEntity db = new DbEntity();
- protected override void Dispose(bool disposing)
- {
- if (disposing) db.Dispose();
- base.Dispose(disposing);
- }
- //[Route("Users")]
- public IActionResult GetUsers()
- {
- List<User> users = db.Users.ToList();
- return Json(new
- {
- datas =users.Select(s=>new
- {
- s.Id,
- s.Username,
- s.Phonenumber,
- s.Password,
- s.CreateTime,
- s.ImageUrl
- })
- });
- }
- }
- }
复制代码
返回类型也可以使用其他兼容Json的类型。
【6】接口测试
利用Postman对编写好的接口进行测试:
可以发现,数据成功获取到了。
最近在学习Core和Docker,后面还会继续与大家分享。
来源:https://blog.csdn.net/qq_38890412/article/details/94214547 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |