我很难解决这个问题:有没有办法将单个条目添加到 ICollection?一次一个,为每个添加的条目将数据持久化到数据库中?
这是我的具体情况:
我有一个测试模型:
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; }
}
我的目标是让用户能够创建一个带有名称和描述的测试,然后动态地将问题添加到该测试中,直到他们满意为止。到目前为止,创建测试很容易,但是用问题加载测试对我来说是一个挑战。我曾设想过一种表单,可以将 Question 和 Test.Id 提交给控制器操作,控制器操作会将数据保存到数据库中。但我不明白如何将问题动态添加到测试的 ICollection 中。
有没有办法将单个条目添加到 ICollection?一次一个?
我做过的许多尝试之一
非常感谢您的帮助!
回应levelnis:我试过这个没有运气
public void AddQuestionToTest(Test test, Question question)
{
question.Test = test;
test.Questions.Add(question);
Update(test);
SaveChanges();
}
它不会向数据库添加任何问题。有任何想法吗?
编辑:我尝试过的唯一将问题输入数据库的代码是:
public void AddQuestionToTest(Test test, Question question)
{
question.Test = test;
Insert(question);
SaveChanges();
}
..但这会使数据库中的另一个测试具有相同的名称/描述,但新的 id 已增加。