Ciao,
allora dovrò avere tre sezioni identiche con domande identiche differenziate solo da questo id occurance
Ok, ti ringrazio per il chiarimento.
Secondo me, la proprietà Occurrence non dovrebbe trovarsi dentro la classe Question.
Un conto è la domanda, e un conto è la sua occorrenza all'interno del questionario.
Dovresti crearti una ulteriore classe chiamata QuestionOccurrence così definita.
public class QuestionOccurrence {
public int OccurrenceId { get; set; }
public Question Question { get; set; }
}
All'interno del ciclo quindi puoi fare:
if (occuranceVal > 0)
{
var questionOccurrences = new List<QuestionOccurrence>();
var section = questionnaire.Sections.FirstOrDefault(s => s.Id == sectionID);
for (int i = 1; i <= occuranceVal; i++)
{
foreach (var quest in section.Questions)
{
questionOccurrences.Add(new QuestionOccurrence { OccurrenceId = i, Question = quest});
}
}
section.QuestionOccurrences.AddRange(questionOccurrences);
}
Sia la lista questionOccurrences che la section.QuestionOccurrences sono di tipo List<QuestionOccurrence>.
In questo modo, grazie alla nuova classe QuestionOccurrence, abbiamo modellato meglio il concetto di "slot" che si trova nella sezione di un questionario e che serve ad accogliere una delle domande presenti in anagrafica.
Personalmente, penso che nella classe QuestionOccurrence avrei messo una chiave composita formata da QuestionnareId, SectionId e OccurrenceId (forse l'avrei chiamato PositionId), in modo da persistere tutte le QuestionOccurrence in un'unica tabella senza rischio di conflitti tra le chiavi.
ciao,
Moreno
Modificato da BrightSoul il 13 marzo 2018 09.11 -