この問題に頭を悩ませています: ICollection に単一のエントリを追加する方法はありますか? 一度に 1 つずつ、追加された各エントリのデータをデータベースに永続化しますか?
ここに私の特定の状況があります:
私はテストモデルを持っています:
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 に単一のエントリを追加する方法はありますか? 一つずつ?
私が行った多くの試みの1つ
助けてくれてありがとう!
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 がインクリメントされます。