Я следовал этому учебнику при создании API и столкнулся с проблемой, которую я изо всех сил пытаюсь решить:
У меня есть два модельных класса: Todo и TodoItem.
Я поместил ICollection TodoItems в класс Todo.
Когда я должен вернуть Todo из запроса API GET, он работает в первый раз, но как только второй запрос отправляется, коллекция TodoItem перезаписывается и снова объявляется через конструктор Todo.
- Попробовал несколько аннотаций (ForeignKey).
- Добавление списка TodoItemIds внутри Todo
(Тип TodoItemIds = новый класс с идентификатором и TodoItemId).
- Хранение Todo и TodoId внутри TodoItem.
- Попытка добавить некоторый код в OnModelcreating () в TodoContext (modelBuilder.Entity <> () ...).
Вот код контроллера, я не знаю, как его аккуратно вставить ...:
TodoController
public TodoController(TodoContext context){
_context = context;
if (_context.TodoItems.Count() == 0)
{
// Create a new TodoItem if collection is empty,
// which means you can't delete all TodoItems.
_context.Todos.Add(new Todo(new TodoItem("Walk the dog")));
_context.SaveChanges();
}
}
// GET: api/Todo
[HttpGet]
public async Task<ActionResult<List<Todo>>> GetTodo()
{
return await _context.Todos.ToListAsync();
}
TodoContext
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Todo>()
.HasMany(t => t.TodoItems);
base.OnModelCreating(modelBuilder);
}
Первый запрос-ответ-ответ
[
{
"id": "34bfd453-8f06-4733-a4b6-1fb209327a8d",
"todoItems": [
{
"id": 1,
"name": "Walk the dog",
"isComplete": false,
"todoId": "34bfd453-8f06-4733-a4b6-1fb209327a8d"
}
]
}
]
Второй ответ Get-Request-Response
[
{
"id": "34bfd453-8f06-4733-a4b6-1fb209327a8d",
"todoItems": []
}
]
Список задач не должен исчезать.