Как создать API, используя шаблон репозитория в ядре dotnet - PullRequest
0 голосов
/ 07 февраля 2019

Вот мой код, и я хочу создать 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; }
 }

Мне нужен вывод в соответствии с методами:

  • Создать курс для определенного уровня GradeLevel
  • Получить курс уровня GradeLevel
  • Получить все единицы курса Я пишу код для следующего условия в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 в этом состоянии.

1 Ответ

0 голосов
/ 07 февраля 2019

Попробуйте ввести код, подобный приведенному ниже,

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