【发布时间】:2021-03-17 10:34:16
【问题描述】:
我要新的实体框架和 dotnet 核心。很快我想解释一下我做了什么以及我遇到了什么样的错误?
我做了什么?
首先我在下面创建了几个模型。
public class Quiz
{
public int QuizID { get; set; }
public int UserID { get; set; }
public string Text { get; set; }
public User User { get; set; }
public ICollection<Question> Questions { get; set; }
}
public class Question
{
public int QuestionID { get; set; }
public string Text { get; set; }
public int QuizID { get; set; }
public Quiz Quiz { get; set; }
public IList<Option> Options { get; set; }
}
public class User
{
public int ID { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public ICollection<Quiz> Quizzes { get; set; }
}
public class Option
{
public int OptionID { get; set; }
public string Choice { get; set; }
public int QuestionID { get; set; }
public bool? IsCorrect { get; set; }
public Question Question { get; set; }
}
其次,我创建了 IActionResult 方法来保存来自用户的信息。
public async Task<IActionResult> CreateQuiz()
{
Quiz quiz = new Quiz();
quiz.UserID = 0;
quiz.Text = Request.Form["content"].ToString();
_context.Add(quiz);
await _context.SaveChangesAsync();
for (int i = 1; i <= 4; i++)
{
Question question = new Question();
question.QuizID = quiz.QuizID;
question.Text = Request.Form["title_" + i].ToString();
_context.Add(question);
_context.SaveChanges();
for (int j = 1; j <= 4; j++)
{
Option option = new Option();
option.QuestionID = question.QuestionID;
option.Choice = Request.Form["option_a" + i].ToString();
option.IsCorrect = j == int.Parse(Request.Form["correct_answer_" + i].ToString());
_context.Add(option);
}
}
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
最后我在保存表单时遇到了这个错误。
处理请求时发生未处理的异常。 SqliteException:SQLite 错误 19:“外键约束失败”。 Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(int rc, sqlite3 数据库)
DbUpdateException:更新条目时出错。看 有关详细信息的内部异常。 Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection 连接,CancellationToken cancelToken)
我需要你们的帮助。
*抱歉拼写规则,我也是英语新手。
【问题讨论】:
标签: entity-framework sqlite .net-core foreign-keys