簡體   English   中英

實體框架多對多關系插入不起作用

[英]Entity Framework many to many relationship insert not working

我有兩個具有多對多關系的表: ActionPlanResponsible

當我插入一個新的ActionPlan和新的Responsible ,表ActionPlanResponsible上的記錄被正確創建,但是當我嘗試添加一個具有現有Responsible的新ActionPlan時,表ActionPlanResponsible的記錄沒有被創建。

我以這種方式在 Json 中傳遞 ActionPlan 和 Responsible:

{

"What": "Whatttasdasdt",
"Why": "Whyasdyyyy",
"How": "Hoasdwwwww",
"StartDate": "28/09/2015",
"EndDate": "28/09/2015",
"CreateDate": "28/09/2015",
"UpdateDate": "28/09/2015",
"State": "1",
"Where" : "Whasdere",
"Goal": {
    "Id": "10"
},
"Responsibles": [{

    "Id": "15"
}]

這就是我在 EF 中處理請求的方式...

foreach (var r in actionPlan.Responsibles)
{
    context.Responsible.Attach(r);
}

context.ActionPlan.Add(actionPlan); 

context.SaveChanges();
transaction.Commit();

ActionPlan 實體:

 public long Id { get; set; }

    public string What { get; set; }

    public string Why { get; set; }

    public string How { get; set; }

    public DateTime StartDate { get; set; }

    public virtual ICollection<Responsible> Responsibles { get; set; }

    public DateTime EndDate { get; set; }

    public Goal Goal { get; set; }

    public virtual ICollection<FileActionPlan> Files { get; set; }

    public virtual ICollection<Comment> Comments { get; set; }

    public string Where { get; set; }

    public virtual ICollection<Task> Tasks { get; set; }

責任單位:

 public byte State { get; set; }

    public DateTime CreateDate { get; set; }

    public DateTime UpdateDate { get; set; }

    //public virtual ICollection<ActionPlan> ActionPlans { get; set; }

    public virtual ICollection<Task> Tasks { get; set; }

    public long Id { get; set; }

    public Guid PersonId { get; set; }

您還必須將Responsibles添加到actionPlan.Responsibles

foreach (var r in actionPlan.Responsibles)
{
    context.Responsible.Attach(r);
    actionPlan.Responsibles.Add(r);
}

context.ActionPlan.Add(actionPlan); 

這不會創建新的Responsibles而是建立關聯,因此 EF 知道它應該插入連接記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM