2012-05-09 3 views
0

Я использую MVC с Entity Framework Model-первых в моем проектеПроблемы с копированием объектов сущностей с ассоциацией

У меня есть сущность 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(); 
} 

и, наконец, мое хранилище:

Я был бы очень признателен, если бы кто-нибудь мог дать мне пример о том, как я могу убедиться, что партнер iation сущности получают копирование также.

Заранее благодарен!

-

+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

Вам, вероятно, нужно повторно связать «SelectedQuestion q» с новой карточкой цели - не на 100% уверен, хотя – Prescott

+0

как бы это выглядело? – Obsivus

Смежные вопросы