通过Entity Framework在master +子表中插入值

时间:2014-08-01 08:57:49

标签: entity-framework asp.net-mvc-4

我有2个表,两个主键都是自动生成的。

public partial class Responses
{
        public Responses()
        {
            this.Answers = new HashSet<Answers>();
        }

        public int responseID { get; set; }
        public System.DateTime create_dt { get; set; }                  
        public virtual ICollection<Answers> Answers { get; set; }
}

responseID是自动生成的主键

 public partial class Answers
 {
        public int answerID { get; set; }
        public int responseID { get; set; }
        public int questionID { get; set; }
        public string answer { get; set; }
        public virtual Questions Questions { get; set; }
        public virtual Responses Responses { get; set; }
 }

我努力同时添加RESPONSE和ANSWERS

public void addAnswers(List<Answers> an)
{
            Responses rp =new Responses();
            rp.create_dttm = DateTime.Today;
            db.Responses.Add(rp).Answers.Add(ans);
            db.SaveChanges();
}

我想在插入Response的同时添加答案,因为ResponseID是自动生成的,我无法让ResponseID将其与Answers表关联。请注意,一个ResponseID与多个问题相关联.......

提前致谢

1 个答案:

答案 0 :(得分:0)

您的代码似乎没问题,除非您没有正确使用Add。您应该使用foreach循环添加Answers集合的每个对象ans

foreach (var answer in ans)
{
    rp.Answers.Add(answer);
}

此外,您应该尊重命名约定:您似乎经常使用复数,例如可能Responses应该被命名为Response,但我可能错了,这完全取决于你的实体的语义......