如何在DOTNET核心使用存储库模式创建API

问题描述 投票:-1回答:1

这里是我的代码,我想创建API,从资源库中的方法。

这是我的代码实体表:

public partial class Course
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int DepartmentID { get; set; }
    [ForeignKey("DepartmentID")]
    public virtual Department  Department { get; set; }

    public int GradeLevelsID { get; set; }
    [ForeignKey("GradeLevelsID")]
    public virtual GradeLevels GradeLevels { get; set; }

    // Navigation 
    public virtual ICollection<Units> Units { get; set; }
 }

我需要根据方法的一些输出:

  • 针对特定年级课程创建
  • 获取年级的课程
  • 获取过程中的所有单位我写的代码在IRepository以下条件 Public interface ICourseRepository { Task<Course> GetAllCourseByGradeLevleId(int id) Task<Course> UpdateCoursetAsync(int Id); Task<Action> CreateCourseAsync(Course Course); Task<Course> DeleteCourseAsync(int Id); }

和存储库的方法将是如下:

public class CountryRepository : ICourseRepository
{
    public Task<Action> CreateCourseAsync(Course Course)
    {
        throw new NotImplementedException();
    }

    public Task<Course> DeleteCourseAsync(int Id)
    {
        throw new NotImplementedException();
    }

    public Task<Course> GetAllCourseByGradeLevleId(int id)
    {
        throw new NotImplementedException();
    }

    public Task<Course> UpdateCoursetAsync(int Id)
    {
        throw new NotImplementedException();
    }

我的问题是,我不能写返回类型的方法和无法从关系表中提取数据,以及无法写入POST和PUT API这个条件。

这里是我的控制器类:

[Route("api/[controller]")]
    [ApiController]
    public class CourseController : ControllerBase
    {

        private readonly ICourseRepository _courseRespository;
        public CourseController(ICourseRepository courseRespository)
        {
            _courseRespository = courseRespository;
        }


        [HttpGet]
        public async Task<IEnumerable<Course>> Get()
        {
            return await _courseRespository.GetAllCourseAsync();
        }


        public async Task<ActionResult<Course>> GetId(int id)
        {
            var result = await _courseRespository.GetAllCourseByIdAsync(id);
            if (result == null)
            {
                return NotFound();
            }
            return result;
        }


        [HttpPost]
        public async Task<ActionResult> Post(Course course)
        {
            // _courseRespository.CreateCourseAsync();
            // await _courseRespository.SaveChangesAsync();
            return CreatedAtAction("GetId", new { id = course.ID }, course);
        }

如何在这种情况下写PUT和POST。

.net-core repository-pattern
1个回答
-1
投票

尝试具有像下方的代码,

[Route("Course")]
public class CountryRepository : ICourseRepository
{
    [Route("~/users/Create")]
    [ResponseType(typeof(Course))]
    [HttpPost]
    public async Task<Action> CreateCourseAsync(Course Course)
    {
        return Request.CreateResponse(HttpStatusCode.OK, resultObj);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.