Мне нелегко обернуть голову вокруг этой проблемы: есть ли способ добавить одну запись в ICollection? По одному, сохраняя данные в базе данных для каждой добавленной записи?Добавьте одну запись в ICollection динамически по одному (MVC4 EF)
Вот моя конкретная ситуация:
У меня есть тест Модель:
public partial class Test
{
public Test()
{
this.Students = new HashSet<Student>();
this.Questions = new HashSet<Question>();
}
public int Id { get; set; }
public string name { get; set; }
public string description { get; set; }
public virtual ICollection<Student> Students { get; set; }
public virtual ICollection<Question> Questions { get; set; }
}
Тестовый содержит набор вопросов. Вопрос Модель:
public partial class Question
{
public Question()
{
this.Answers = new HashSet<Answer>();
}
public int Id { get; set; }
public string query { get; set; }
public virtual Test Test { get; set; }
public virtual ICollection<Answer> Answers { get; set; }
}
Моя цель состоит в том, чтобы пользователь, чтобы иметь возможность создать тест, с именем и описанием, а затем динамически добавлять вопросы к этому испытанию, пока они не будут удовлетворены. На данный момент создание теста прост, но загрузка теста с вопросами доказывает сложность для меня. Я предвидел форму, которая представила бы вопрос и тест. Идлось бы действие контроллера, которое сохраняло бы данные в базе данных. Но я не понимаю, как я могу динамически добавлять вопрос к ICollection теста.
Есть ли способ добавить одну запись в ICollection? Один за раз?
Одна из многих попыток я сделал
Большое спасибо за любую помощь!
В ответ на levelnis: Я попытался это не повезло
public void AddQuestionToTest(Test test, Question question)
{
question.Test = test;
test.Questions.Add(question);
Update(test);
SaveChanges();
}
Это не добавляя никаких вопросов к БД. Есть идеи?
EDIT: Единственный код, который я попробовал, что получает вопрос в базе данных:
public void AddQuestionToTest(Test test, Question question)
{
question.Test = test;
Insert(question);
SaveChanges();
}
..но это делает еще один тест в базу данных с тем же именем/описанием, но новый id, который был увеличен.
Кажется, я не работаю для меня. Добавлен вопрос, чтобы показать, что я пробовал. – nycfdtd
Вам нужно сначала вставить вопрос, а затем добавить его в тест и обновить? – levelnis
Если я вставил (вопрос). Вопрос сохраняется в базе данных, но он дублирует другой тест с идентификатором, который увеличивается на единицу. Тест имеет то же имя и описание. – nycfdtd