数据库表Record里有个外键employeeId,引用Employee表Id字段。
程序Edit Action 里:
通过EF获取记录及其依赖项:
Record record = (from r in db.Records.Include("Employee")
where r.id == 123
select r).First();
调试能看到获取到的Record对象的 EmployeeId、Employee字段都有值。
但是在[HttpPost]Edit Action里:
调试看到 EmployeeId、Employee字段的值都是空。
尝试自己填充这两个字段,则提示:违反了引用完整性约束: 在此关系的主对象和依赖对象之间,定义引用约束的属性值不一致。
是不是前台没有明确写出来 @Html.HiddenFor(model=>model.EmployeeId) 导致后台没有获取到值
@Html.HiddenFor(model => model.EmployeeId)
@Html.HiddenFor(model => model.Employee.Name)
昨天我也想到这点,试了下,而且前台代码都是包括在 @using (Html.BeginForm()) {} 里的,但是这样做提交后提示:违反了引用完整性约束: 在此关系的主对象和依赖对象之间,定义引用约束的属性值不一致。
然后刚才试了下只留下:@Html.HiddenFor(model => model.EmployeeId) ,成功了!
提交后 Record.Employee 对象是空的,不过只要 Record.EmployeeId 不空就好。
@Badcode Hsu: 这个错误不太懂,但一般外键的话只需要提交Id就可以