繁体   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