我正在嘗試使用 C# Web API 和 SQL Server 創建一個任務管理系統。
這是我想要實作的目標:
- 用戶可以發送 POST 請求來創建任務(帶有可選的子任務)。
- 用戶可以發送 GET 請求來檢索任務(如果存在,則在回應中顯示所有子任務)
以下是我目前的一些檔案:
任務 DTO:
public class TaskDto
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime StartDate { get; set; }
public DateTime FinishDate { get; set; }
public string Status { get; set; }
}
任務.cs:
public class Task
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime StartDate { get; set; }
public DateTime FinishDate { get; set; }
public string Status { get; set; }
}
子任務.cs:
public class SubTask
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Status { get; set; }
}
使用上面的代碼,我目前能夠發布和獲取任務,但我正在努力添加子任務部分。
有人可以建議我需要做什么才能滿足此要求嗎?
非常感謝提前
uj5u.com熱心網友回復:
更好的方法是添加屬性 nullable ParentTaskId,它只是父任務的任務 ID。我正在考慮該任務和子任務具有相同的屬性。
否則為子任務創建一個單獨的類并將可空添加parentTaskId到它作為外鍵。
uj5u.com熱心網友回復:
你的課程會像這樣連接起來......
public class Task
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<SubTask> SubTask { get; set; }
}
public class SubTask
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int? TaskId { get; set; }
public Task Task { get; set; }
}
你可以看到它Task有一個集合,SubTask并且SubTask有一個回傳的參考,Task帶有一個Task屬性和一個TaskId。
更新:因為您沒有像我最初認為的那樣優先使用 EF 代碼。
您的 DTO 可能只有一個 SubTask 串列,如下所示:
public class TaskDto
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual List<SubTask> SubTask { get; set; }
}
然后,您可以執行以下操作:
var tasks = (from t in _db.Tasks
join st in _db.Sub Tasks on st.Id equals t.SubTaskId
select new TaskDto
{
Id = t.Id,
Name = t.Name,
Description = t.Description,
SubTask = st
});
這都是手寫的,但它會沿著這些路線。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/317062.html
下一篇:部分實體化
