2012-05-09 135 views
0

我在我的项目中使用MVC实体框架模型首先复制一个实体对象问题与公司章程

我有一个实体GoalCard这个实体关联到其他实体SelectedQuestion

该协会的样子像这样:GoalCard 1....Many SelectedQuestion

我想要实现的是复制一个GoalCard对象及其值,并且确保关联实体也可以获取它。

我已经尝试了大部分东西深层克隆等,但我不能得到它的工作。

我可以成功复制一个GoalCard对象,并将其添加到我的GoalCard实体新的Id但我不能得到关联实体重复。

我有retrives一个goalcard一个仓储类:

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

在我的操作方法我controllor里面我做如下:

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

,最后我的仓库:

我会很感激,如果有人能给我一个例子,我怎么可以确保assoc实体实体得到复制以及..

在此先感谢!

-

+1

您将需要复制每个相关实体和重新关联,与新goalcard – Prescott

+0

你能不能给我如何工作的一个例子?谢谢! :) – Obsivus

回答

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

'SelectedQuestion'是一个实体,'SelectedQuestions'是一个导航属性。这会工作吗?明天早上我不能尝试你的榜样。 – Obsivus

+0

您可能需要重新关联“新选择的问题q”与新的门将卡 - 不是100%肯定,但 – Prescott

+0

看起来如何? – Obsivus