1
我有兩個表項目和任務在我的分貝。 一個項目可能有幾個任務,所以它有任務列插入任務id。當新項目創建時,任務列將爲空,它可以爲空。但是,當創建新任務時,我想獲取任務ID並通過將新創建的任務ID添加到任務列來修改項目表。我如何在MVC 4中做到這一點?ASP.NET MVC 4更新外鍵表
我有兩個表項目和任務在我的分貝。 一個項目可能有幾個任務,所以它有任務列插入任務id。當新項目創建時,任務列將爲空,它可以爲空。但是,當創建新任務時,我想獲取任務ID並通過將新創建的任務ID添加到任務列來修改項目表。我如何在MVC 4中做到這一點?ASP.NET MVC 4更新外鍵表
假設你用Entity Framework - Code First去,你總是可以採取這種方法,一個項目有很多任務。我創建了模型,你
public class Project
{
public int Id { get; set; }
public virtual ICollection<ProjectTask> ProjectTasks { get; set; }
}
public class ProjectTask
{
public int ProjectId { get; set; }
public int TaskId { get; set; }
public virtual Project Project { get; set; }
public virtual Task Task { get; set; }
}
public class Task
{
public int Id { get; set; }
public string Description { get; set; }
public virtual ICollection<ProjectTask> ProjectTasks { get; set; }
}
現在,根據您的設置(庫,上下文等),你可以創建新的任務,你覺得自由,然後在準備好時,檢索項目,並添加到它像這樣。
var task = new Task() {Description = "My new task"};
Project project = ProjectRepository.FirstOrDefault();
if (project != null)
{
project.ProjectTasks.Add(new ProjectTask(){Task = task});
ProjectRepository.SaveChanges();
}
如果這聽起來像你要什麼我都附着在實體框架建立Repository模式一些閱讀
進一步閱讀
我認爲你有一個設計問題。如果一個'Project'可以有很多'Tasks',那麼'Project'表應該不知道'Tasks'。每個'Task'都應該有一個'ProjectId'字段,用於存儲與其關聯的'Project'的'ProjectId'。 – Coda17
當然,任務表具有名爲Project_ID的列,但是當我爲名爲「我的項目」的項目創建新任務時ID爲7,例如,當我看到Project表時,在Project_Task列下的值爲0而不是任務ID 7 – 1919
'Project'表不應該有任何'Task'列。如果你想看看什麼'Tasks'和'Project'關聯,你需要在'ProjectId'上的兩個表之間(來自'Tasks'表)的'JOIN',等同於''ProjectId''的'項目'表。 – Coda17