使用关联复制实体对象时出现问题

时间:2012-05-09 17:52:34

标签: c# asp.net-mvc entity-framework linq-to-entities clone

我在项目中使用MVC和Entity Framework Model-First

我有一个实体GoalCard,此实体与另一个实体SelectedQuestion

相关联

该关联看起来像这样:GoalCard 1....Many SelectedQuestion

我想要实现的是复制一个GoalCard对象及其值,同时确保关联实体也能获得它。

我已经尝试了大部分深度克隆等等。但是我无法让它工作。

我可以成功复制GoalCard对象,并使用新的GoalCard将其添加到我的Id实体,但我无法复制关联实体。

我有一个可以检索目标卡的存储库类:

 public GoalCard GetGoalCardByID(int id)
    {
        return db.GoalCard.SingleOrDefault(x => x.Id == id);
    }

在我的控制器内的行动方法中,我做了以下事情:

public ActionResult Template(int id)
{
   var GoalCard = Repository.GetGoalCarddByID(id);
   Repository.CopyGoalCard(GoalCard);
   return View();
}

最后是我的存储库:

public GoalCard CopyGoalCard(GoalCard goalcard)
{
  db.Detach(goalcard);
  GoalCard.EntityKey = null;
  db.AddToGoalCard(goalcard);
  db.SaveChanges();
  return goalcard;

}

如果有人能给我一个关于我如何确保关联实体得到复制的例子,我会很感激..

提前致谢!

-

1 个答案:

答案 0 :(得分:0)

更改此方法以循环使用SelectedQuestions:

public GoalCard CopyGoalCard(GoalCard goalcard)
{
  db.Detach(goalcard);
  GoalCard.EntityKey = null;
  foreach (SelectedQuestion q in goalCard.SelectedQuestions) {
      db.Detach(q);
      q.Key = null;
      db.AddSelectedQuestion(q);
  }
  db.AddToPlayer(goalcard);
  db.SaveChanges();
  return goalcard;
}