public ActionResult Create(string name, List<QuestionPost> questions ) { var survey = new Survey() {Name = name}; var types = Repository.OfType<SurveyFieldType>().GetAll(); for (var i = 0; i < questions.Count; i++ ) { var q = questions[i]; var type = types.First(a => a.Id == q.FieldTypeId); var field = new SurveyField() { Prompt = q.Prompt, SurveyFieldType = type, Order = i}; if (type.HasOptions && q.Options != null) { foreach (var o in q.Options.Distinct()) { field.AddFieldOption(new SurveyFieldOption() { Name = o }); } } if (q.ValidatorIds != null) { foreach (var v in q.ValidatorIds.Distinct()) { field.SurveyFieldValidators.Add(Repository.OfType<SurveyFieldValidator>().GetById(v)); } } survey.AddSurveyField(field); } Repository.OfType<Survey>().EnsurePersistent(survey); Message = "Survey has been created"; return RedirectToAction("Index"); }