После прочтения нескольких уроков у меня есть хорошая идея, как реализовать API Rest с OData.Я могу создавать, обновлять и удалять сущности и связывать существующие сущности с коллекцией сущностей.Но что, если моя сущность просто содержит другую сущность.
Пример, допустим, у меня есть курс
public class Course
{
[Key]
public Guid Id { get; set; }
public ICollection<Student> Students { get; set; }
public Teacher Teacher { get; set; }
public Location Location { get; set; }
}
public class Teacher
{
[Key]
public Guid Id { get; set; }
public ICollection<Location> Location { get; set; }
}
Как мне реализовать контроллер курса для связи с учителем или местоположением.Местоположение должно быть Местоположение этого Учителя.
Я просто хочу знать, какой Маршрут мне нужно создать
[HttpPost]
[ODataRoute("Course({key})/Location/$ref")]
[HttpPut]
[ODataRoute("Course({key})/Location({relatedKey})/$ref")]
[HttpDelete]
[ODataRoute("Course({key})/Location({relatedKey})/$ref")]
Это больше о HttpPut и HttpDelete У меня есть некоторые сомнения, потому чтоУ меня нет коллекции местоположений.Так что связанный ключ здесь не имеет смысла.Должен ли я написать свой маршрут так:
[HttpPut]
[ODataRoute("Course({key})/Location/$ref")]
[HttpDelete]
[ODataRoute("Course({key})/Location/$ref")]
Это правильно?
РЕДАКТИРОВАТЬ
На данный момент у меня есть это в моем коде
[HttpPut]
[ODataRoute("Course({key})/Location/$ref")]
public async Task<IActionResult> UpdateLinkToLocation([FromODataUri] Guid key, [FromBody] Uri link)
{
throw new NotImplementedException();
}
[HttpDelete]
[ODataRoute("Course({key})/Location/$ref")]
public async Task<IActionResult> DeleteLinkToLocation([FromODataUri] Guid key)
{
throw new NotImplementedException();
}
Мне кажется странным, что можно удалить без указания ключа моего местоположения.Но почему бы и нет, у меня есть только одно местоположение, если я хочу его удалить, давайте сделаем это.Мне просто нужно подтверждение по этому поводу.