EF Core 2不保存相关实体

时间:2018-02-03 20:42:30

标签: c# .net-core asp.net-core-2.0 ef-core-2.0

我在Template和TemplateParameters之间建立了隐含的一对多关系。据我所知,我遵守惯例。但是,当我保存模板时,不会发现子项并将其保存。

public class Template
    {
        #region Properties
        public int TemplateId { get; set; }
        public string UserId { get; set; }
        public DateTime Created { get; set; }
        public DateTime Published { get; set; }
        public bool Deleted { get; set; }
        public int Likes { get; set; }
        public int Shares { get; set; }
        public int Downloads { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public decimal Price { get; set; }
        #endregion

        #region Navigation
        //navigation properties
        public ApplicationUser User { get; set; }
        public IEnumerable<Wave> Waves { get; set; }
        public IEnumerable<TemplateParameter> TemplateParameters;
        public IEnumerable<ApplicationUser> Subscribers; 
        #endregion
    }
public class TemplateParameter
    {
        public int TemplateParameterId { get; set; }
        public int TemplateId { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public double? Value { get; set; }
        public DateTime Created { get; set; }

        //navigation properties
        public virtual Template Template { get; set; }
    }

[HttpPost]
        [Route("SaveTemplate")]
        public TemplateViewModel SaveTemplate([FromBody] TemplateViewModel vm)
        {
            //get the current userId        
            var user = _userManager.GetUserAsync(HttpContext.User).Result;
            var token = User;

            //map params
            var parameters = vm.Parameters.Select(r => new TemplateParameter()
            {
                Name = r.Name,
                Description = r.Description,
                Created = DateTime.Now,
            }).ToList();

            //map the vm to the model
            var template = new Template()
            {
                Name = vm.Name,
                Description = vm.Description,
                Created = DateTime.Now,
                UserId = user.Id,
                TemplateParameters = parameters,
            };

            //save the template
            template = _templateService.SaveTemplate(template);
            //map id back to the view model
            vm.TemplateID = template.TemplateId;
            return vm;
        }

 public Template SaveTemplate(Template template)
        {
            _context.Templates.Add(template);
            _context.SaveChanges();
            return template;
        }

有谁能发现我在这里做错了什么?模板保存得很好,但子集合没有。我在我的项目的其他地方使用相同的模式,它似乎没有问题。提前感谢您的帮助。

0 个答案:

没有答案