在单个操作中添加新的相关实体

时间:2016-09-25 16:26:56

标签: entity-framework asp.net-mvc-5 entity-framework-6

每个谜语都有一个或多个问题,如何通过提交单一表格为谜语添加谜语和问题?

这是RiddlesController创建操作代码:

EV -> https://example.com/*
EV -> https://www.example.com/*

non-EV -> https://client1.example.com/*
non-EV -> https://client2.example.com/*
non-EV -> https://client3.example.com/*
...
non-EV -> https://client999.example.com/*

这是Riddle模型代码:

public ActionResult Create(RiddleViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    _db.Riddles.Add(new Models.Riddle
                    {
                        Name = model.Name,
                        Description = model.Description ,
                        CreationDate = DateTime.Now,
                        User = _db.Users.Find(User.Identity.GetUserId()),
                    });
                    _db.Questions.Add(new Models.Question
                    {
                        Body = model.FirstQuestionBody,
                        Answer = model.FirstQuestionAnswer,
                        CreationDate = DateTime.Now,
                        // What should I write here? or is there any better way to accomplish this?
                        Riddle = ????? 
                    });
                    _db.SaveChanges();
                    return RedirectToAction("Index");
                }

                catch
                {
                    return View();
                }
            }
            return View();
        }

这是问题型号代码:

public class Riddle
{
    public int Id { get; set; }
    public string Name { get; set; }
    [MaxLength(200)]
    [DataType(DataType.MultilineText)]
    public string Description { get; set; }
    public List<Review> Reviews { get; set; }
    [Required]
    public ApplicationUser User { get; set; }
    public virtual List<Question> Questions { get; set; }
    [Column(TypeName = "datetime2")]
    public DateTime CreationDate { get; set; }    

}

这是RiddleViewModel代码:

 public class Question
    {
        public int Id { get; set; }
        public string Body { get; set; }
        public string Answer { get; set; }
        public Riddle Riddle { get; set; }
        [Column(TypeName ="datetime2")]
        public DateTime CreationDate { get; set; }
    }

1 个答案:

答案 0 :(得分:1)

您可以尝试如下所示。

_db.Questions.Add(new Models.Question
                    {
                        Body = model.FirstQuestionBody,
                        Answer = model.FirstQuestionAnswer,
                        CreationDate = DateTime.Now,
                        Riddle = new Models.Riddle
                                    {
                                     Name = model.Name,
                                     Description = model.Description ,
                                     CreationDate = DateTime.Now,
                                     User = _db.Users.Find(User.Identity.GetUserId()),
                                    }
                       });

                    _db.SaveChanges();
相关问题