1

我在我的项目中使用 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;

}

如果有人能给我一个关于如何确保关联实体也被复制的例子,我将不胜感激。

提前致谢!

-

4

1 回答 1

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;
}
于 2012-05-09T19:13:39.923 回答