【发布时间】:2020-07-20 20:14:25
【问题描述】:
我正在使用 ASP.Net Core 构建一个简单的待办事项列表 api。它有两个主要的两个主要模型,一个列表模型和一个任务模型。每个列表都有许多任务。我这样构建模型:
列表模型:
namespace ToDoList.Models
{
public class List
{
[Key]
public int ListId { get; set; }
[Required]
[StringLength(25)]
public string Title { get; set; }
public string Colour { get; set; }
public virtual ICollection<Task> Tasks { get; set; }
public List()
{
Tasks = new List<Task>();
Colour = "secondary";
}
}
}
任务模型:
namespace ToDoList.Models
{
public class Task
{
[Key]
public int TaskId { get; set; }
[Required]
[StringLength(50)]
public string Title { get; set; }
public bool Done { get; set; }
public int ListId { get; set; }
public virtual List List { get; set; }
public Task()
{
Done = false;
}
}
}
当我发送发布请求以创建新任务时,我正在努力将创建的任务添加到 List 模型的 Icollection 部分。
我的控制器如下所示:
// POST: api/Tasks
[HttpPost]
public async Task<ActionResult<Models.Task>> PostTask(Models.Task task)
{
_context.Tasks.Add(task);
await _context.SaveChangesAsync();
return CreatedAtAction("GetTask", new { id = task.TaskId }, task);
}
如果我将此数据作为 JSON 作为 POST 请求发送:
{ title: "A New Task", listId: 11 }
我创建了这个任务:
{"taskId":16,"title":"A New Task","done":false,"listId":11,"list":null}
如您所见,它具有正确的 listId,但附加的列表为空。
该任务也不会添加到 list.Tasks 集合中。
{"listId":11,"title":"Learn ASP.Net Core","colour":"secondary","tasks":[]}
如您所见,任务仍然是空的。
我如何设置它在创建任务时始终添加到 List.Tasks,然后 Tasks.List 附加了正确的列表,而不是 null。
此外,在我的 SQL Sever 数据库上,我希望在 Lists 表中看到一个 Tasks,但我没有。谁能解释为什么? SQL Sever Database Columns Picture
【问题讨论】:
标签: asp.net sql-server entity-framework asp.net-core asp.net-web-api