还有一个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);
}
答案 0 :(得分:2)
你不能完全通过外键强制执行真正的1:1关系,因为插件必须一次完成一次并且这样做会违反约束。
相反,你必须以1:0的比例建立关系。通过UserStatsID
int?
而不是int
来完成此操作。
答案 1 :(得分:0)
问题是您的表具有UserStats
表的外键。如果foreign key
字段为nullable
,那么您可以使用int?
并在没有提供值的情况下将其置为空。无论如何,问题是您正在尝试插入一个记录,其中外键的值不存在作为引用表中的主键。确保无论何时为外键指定值,引用的表都会在记录中包含该键。