【问题标题】:insertion of foreign key asp.net mvc插入外键 asp.net mvc
【发布时间】:2018-09-18 06:14:39
【问题描述】:

我有 3 个模型

public class UsersModel
    {
        [Key]
        public int UserId { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "Invalid Name Minimum Length is 5", MinimumLength = 5)]
        public string Name { get; set; }

        //20150090
        public int? student_ID { get; set; }

        [Display(Name = "transcript")]
        public string transcript { get; set; }

        [Required]
        [EmailAddress]
        public string Email { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm password")]
        [Compare("Password", ErrorMessage = "The password do not match.")]
        public string ConfirmPassword { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "Invalid Name Minimum Length is 2", MinimumLength = 2)]
        public string Department { get; set; }

        [Required]
        [Display(Name = "Phone")]
        [DataType(DataType.PhoneNumber,ErrorMessage ="Invalid Phone Number")]
        [Range(999999999, 9999999999)]
        public int Phone { get; set; }

        public int type { get; set; }

    }

学生

 public class StudentsModel
    {
        [Key]
        [Display(Name ="ID")]
        public int StudentID { get; set; }

        [Required]
        public string Name { get; set; }

        [Required]//20150090
        public string student_ID { get; set; }

        [Required]
        [Display(Name = "Skills")]
        public string Skills { get; set; }

        [Required]
        [Display(Name = "Gpa")]
        [Range(1.00, 4.00, ErrorMessage = "It must be in range 0.00 to 4.00 :)")]
        public float Gpa { get; set; }

        [Required]
        [Display(Name = "Leader")]
        public string Leader { get; set; }

        [Required]
        [Display(Name = "transcript")]
        public string transcript { get; set; }

        [ForeignKey("UserId")]
        public int UserId;
        public UsersModel Users { get; set; }

        [ForeignKey("IdeaId")]
        public int? IdeaId;
        public IdeaModel Idea { get; set; }


    }

想法

public class IdeaModel
    {
        [Required]
        [Key]
        public int IdeaId { get; set; }

        [Required]
        public string IdeaName { get; set; }

        [Required]
        public string IdeaDescription { get; set; }

        [Required]
        public string tools { get; set; }

        public int? SetWith { get; set; }

        [Required]
        public int Prof1 { get; set; }

        public int Prof2 { get; set; }

        public int Prof3 { get; set; }
    }

当我插入数据库用户和学生和想法时 学生模型中插入空值的外键 这是插入代码 我希望学生模型中的外键自动插入 usernodel和idea模型中的主键值如何实现?

public ActionResult RegisterLeader(regall reg)
        {
            if (ModelState.IsValid)
            {
                var user= db.Users.Add(reg.users);
                var idea = db.Idea.Add(reg.idea);
                var stu = db.Students.Add(reg.students[0]);

                db.SaveChanges();

                return View("RegisterLeaderPost");
                //return Registerfinish();

            }
}

这个模型有三个模型

 public class regall
    {
        public List<StudentsModel> students { get; set; }
        public UsersModel users { get; set; }
        public IdeaModel idea { get; set; }
    }

【问题讨论】:

  • 好吧,如果reg 包含三个独立的对象,EF 怎么知道它们是相关的?但我们不知道reg 是什么。
  • 问题已更新
  • 仍然看不到对象之间的关系。
  • 在 StudentModel 我有 2 个外键 UserId 和 IdeaId 当我插入新记录时插入带有空值的外键我想在 userModel 和 IdeaModel 中插入带有主键值的 2 个外键

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


【解决方案1】:

您需要设置学生的 Idea 属性,以便 EF 知道建立关系。

reg.students[0].Idea = reg.idea;

【讨论】:

  • 无法将 IdeaModel 类型隐式转换为 StudentsModel
  • @AhmedMahmoud 抱歉,我忘记将.Idea 放入代码中以设置属性。请参阅编辑后的答案。
猜你喜欢
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 2019-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多