假设我有3张桌子:
员工(id1,...)
部门(id2,...)
EmployeeDepartment(id1,id2,datecreated,...)
我有以下类型的数据:
员工:
(1,'BoB',......)
系:
(1,'HR')
(2,'市场营销')
(3,'发展')
EmployeeDepartment:
(1,1,'2011-01-01')
在UI for Employee数据表单中,有一个组合框允许用户更改员工部门。
所以现在我想将这个员工部门改为市场营销,这意味着:
(1,1,'2011-01-01') - >(1,2,'2011-01-01')
从逻辑上讲,我应该更新实体EmployeeDepartment(1,1,'2011-01-01')
如果我使用以下代码:
EmployeeDepartment.id2 = 2;
然后提交更改,我会收到错误:无法更改密钥。
然后尝试另一种方式:删除(1,1,'2011-01-01')然后添加(1,2,'2011-01-01'):
EmployeeDepartments.Remove((1,1,'2011-01-01'));
EmployeeDepartments.Add(new(1,2,'2011-01-01'));
然后提交更改,在数据库中,我在EmployeeDepartment中有两条记录:
(1,1,'2011-01-01')
(1,2,'2011-01-01')
不是一个(1,2,'2011-01-01')。
如何解决此问题?
答案 0 :(得分:0)
如何为EmployeeDepartment提供自己的密钥而不是当前拥有的组合密钥,并在各自的ID上与员工和部门建立外键关系。