实体框架中的外键记录

实体框架中的外键记录

问题描述:

我最近开始使用实体框架并遇到问题。实体框架中的外键记录

我已经绘制两个简单的表与实体框架在我的解决方案:

员工

emp_id INT 
first_name VARCHAR 
last_name VARCHAR 
department INT (FOREIGN KEY MAPPED TO departments.dept_id) 

部门

dept_id INT 
department_name VARCHAR 

使用下面的代码,我想写入数据库。

var record = db.employees.Create(); 

string test = "test"; 

record.first_name = test; 
record.last_name = test; 
record.department = 1; 

db.employees.Add(record); 
db.SaveChanges(); 

我得到一个错误的错误:

Entities in "'DBContextContainer.employees' participate in the 'employeedepartment' relationship. 0 related 'department' were found. 1 'department' is expected."

db.SaveChanges()方法。有人可以向我解释我该如何解决或排除故障?

更新:在部门表中有一个记录,dept_id是1,我仍然收到错误。

+0

Departments表中是否存在ID为1的现有部门? – Abbath 2014-10-05 23:18:17

+0

是的,在部门表中有一个记录,dept_id为1 – user3648426 2014-10-05 23:20:22

+0

向我们显示数据库的内容?出于某种原因,EntityFramework无法使用'dept_id' 1查找部门。 – gldraphael 2014-10-05 23:32:24

由于Departments是父表(雇员依据您的表结构依赖于Departments),所以您需要首先向Departments表中添加一个字段。您无法添加employeedepartment,该表在Departments表中没有相应的条目。

+0

嗨,我已经完成了。部门表中有一个记录,其dept_id为1 – user3648426 2014-10-05 23:19:52

+2

@ user3648426为什么员工部门是varchar和Departments是int。他们需要是一样的。 – gldraphael 2014-10-05 23:22:22

+0

嗨,我的坏,我在帖子中发生错误,但已纠正它。它(employees.department)实际上是我的模型和数据库中的一个INT。 – user3648426 2014-10-05 23:27:01