2012-05-09 172 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