{" INSERT语句与FOREIGN KEY约束冲突该语句已被终止。"}

时间:2013-09-03 16:46:56

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

还有一个userstats表,我想要一对一的关系,但是当我尝试注册用户时,我收到了上述错误。谢谢你的帮助!

用户表:

     public class User
        {
            [Key]
            public int ID { get; set; }

            public int UserStatsID { get; set; }
            public virtual UserStats UserStats { get; set; }

           }

Userstats Table

  [Key]
    public int ID { get; set; }

    public int UserID { get; set;}
    [Required]
    public User User { get; set; }        

RegisterDetailsController

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(User user)
    {
        if (ModelState.IsValid)
        {
            db.Users.Add(user);
            db.SaveChanges();
            if (user.Gender == Gender.Male )
            {
                return RedirectToAction("RegisterMale", "RegisterStats", new {id = user.ID });
            }
            else
            {
                return RedirectToAction("RegisterFemale", "RegisterStats", new { id = user.ID });

            }
        }

        return View(user);
    }

2 个答案:

答案 0 :(得分:2)

你不能完全通过外键强制执行真正的1:1关系,因为插件必须一次完成一次并且这样做会违反约束。

相反,你必须以1:0的比例建立关系。通过UserStatsID int?而不是int来完成此操作。

答案 1 :(得分:0)

问题是您的表具有UserStats表的外键。如果foreign key字段为nullable,那么您可以使用int?并在没有提供值的情况下将其置为空。无论如何,问题是您正在尝试插入一个记录,其中外键的值不存在作为引用表中的主键。确保无论何时为外键指定值,引用的表都会在记录中包含该键。