我有两张桌子,员工和部门
员工
EmpId EmpName DepID
1 Jayaram 1
2 Unni 1
3 Hishan 2
4 Dayeswar 2
系
1医疗
2清洁
3安全性
4食堂
有两个模型对应于这些表
public class EmployeeModel
{
[Key]
public int EmpId { get; set; }
public string EmpName { get; set; }
public int DepId { get; set; }
public virtual DepartmentModel Departments { get; set; }
}
public class DepartmentModel
{
[Key]
public int DepId { get; set; }
public string DepName { get; set; }
}
在EmployeeModel中我将DepartmentModel作为导航属性。这是我的问题是当我用EmployeeModel插入Employee表时。我得到如下错误
InnerException:System.Data.SqlClient.SqlException HResult = -2146232060 Message = INSERT语句与FOREIGN KEY冲突 约束" FK_dbo.EmployeeModels_dbo.DepartmentModels_DepId"。该 数据库" MvcApplication2.Models.Connect",表中发生冲突 " dbo.DepartmentModels",column' DepId'。声明一直如此 终止。 Source = .Net SqlClient Data Provider ErrorCode = -2146232060
connect.Employees.Add(EmployeeModelObject); connect.SaveChanges();
我希望我的一些堆栈兄弟可以解决我的问题
答案 0 :(得分:0)
根据错误,您的表与您插入的FK值(列:DepId)之间的关系不在“DepartmentModel”表中。
FK的工作方式是它不能在该列中具有值,该值也不在引用的(DepartmentModel)表的主键列中。
为了修复,您需要在保存EmployeeModel之前将值设置为具有现有或新的DepartmentModel对象的EmployeeModelObject.Departments。
样品:
using (var ctx = new CustomContext())
{
EmployeeModel emp = new EmployeeModel() { EmpId = 1, EmpName="Name" }
emp.Departments = new DepartmentModel() { DepId = 1, DepName = "D1" }
ctx.EmployeeModels.Add(emp);
ctx.SaveChanges();
}