假设我有3个不同的表格,表格->主题->具有导航属性的问题。
这些表看起来像
Form:FormId,(列表)主题|主题:TopicId,(列表)问题|问题:QuestionId,内容
我想将数据插入到Question表,但是我需要为FormId和TopicId指定一个ID,以标识要插入的表单和主题。
我已经尝试过此代码
var ref = _context.Form.Include(t=>t.Topic).ThenInclude(q=>q.Question).Add(Data);
但是找不到对问题表的引用,因此我无法向表中插入数据。
有谁知道如何像这样将数据插入嵌套表?
答案 0 :(得分:0)
您已经知道此“问题”正在添加到哪个“主题”中。您应该找到它并向其中添加“问题”,然后更新并保存上下文。 在这种情况下,应将“ TopicId”添加到“问题”。
请看我的例子:
public class Form
{
[Key]
public int Id { get; set; }
public List<Topic> Topics { get; set; }
}
public class Topic
{
[Key]
public int Id { get; set; }
public List<Question> Questions { get; set; }
public int FormId { get; set; }
[ForeignKey("FormId")]
public Form Form { get; set; }
}
public class Question
{
[Key]
public int Id { get; set; }
public string Content { get; set; }
public int TopicId { get; set; }
[ForeignKey("TopicId")]
public Topic Topic { get; set; }
}
迁移后,它是这样的:
现在,让我在该结构中添加一个“问题:
Question question = new Question() { Content = "Some content", TopicId = 1 };
Topic topic = dbContext.Topics.SingleOrDefault(x => x.Id == question.TopicId);
if(topic != null)
{
topic.Questions.Add(question);
dbContext.SaveChanges();
}
希望对您有帮助。