Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 复制实体对象及其关联时出现问题_C#_Asp.net Mvc_Entity Framework_Linq To Entities_Clone - Fatal编程技术网

C# 复制实体对象及其关联时出现问题

C# 复制实体对象及其关联时出现问题,c#,asp.net-mvc,entity-framework,linq-to-entities,clone,C#,Asp.net Mvc,Entity Framework,Linq To Entities,Clone,在我的项目中,我首先使用带有实体框架模型的MVC 我有一个实体目标卡,该实体与另一个实体SelectedQuestion关联 这个协会看起来是这样的:目标卡1…许多选择的问题 我想要实现的是复制一个GoalCard对象及其值,并确保关联实体也能得到它 我已经试过了deep clone等的大部分东西,但我无法让它工作 我可以成功地复制一个GoalCard对象,并使用新Id将其添加到我的GoalCard实体中,但我无法复制关联实体 我有一个repository类,可以检索目标卡: public G

在我的项目中,我首先使用带有实体框架模型的MVC

我有一个实体目标卡,该实体与另一个实体SelectedQuestion关联

这个协会看起来是这样的:目标卡1…许多选择的问题

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

我已经试过了deep clone等的大部分东西,但我无法让它工作

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

我有一个repository类,可以检索目标卡:

 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;

}
如果有人能给我举个例子,说明如何确保关联实体也得到复制,我将不胜感激

提前谢谢


-

将此方法更改为同时循环选择的问题:

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;
}

你需要复制每个相关实体,并将其与你的新目标重新关联。你能给我一个如何工作的例子吗?谢谢SelectedQuestion是一个实体,SelectedQuestions是一个导航属性。这样行吗?我要到明天早上才能尝试你的例子。你可能需要将所选的问题q与新的目标卡重新关联——但不是100%确定