我在项目中使用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;
}
如果有人能给我一个关于我如何确保关联实体得到复制的例子,我会很感激..
提前致谢!
-
答案 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;
}