我有个数据库,里面有两个表:Department(部门)和Employee(雇员表)Department的主键为Guid的DepartmentID,和Employee的外键DeparmentID关联,形成一对多关系,用ADO.Net Entity Framework 生成实体后。
我想增加一个雇员:可是生成的Employee实体中没有DepartmentID的属性,我怎么给它赋值呢?
而且也无法更新这个雇员的部门信息,还是因为这个雇员实体中没有DepartmentID的属性!
我找到了一个解决办法是:
Employee emp = new Employee();
emp.Name="xiaozhuang";
ObjectQuery<Department> dept= entities.CreateQuery<Department>("Select Value a from Department as a where a.DepartmentID = @ID", new ObjectParameter("ID", new Guid(DepartmentID)));
dept.FirstOrDefault().Employee.Add(emp);
entities.SaveChanges();
可是这样也太搞笑了吧?插入还要先查询出来啊?性能太差了!
还有一个办法是:
Employee emp = new Employee();
emp.Name="xiaozhuang";
emp.DepartmentReference.EntityKey = new System.Data.EntityKey("ForeseeFrameWorkDataBaseEntities.Department", "DepartmentID", new Guid(departmentid));
entities.AddToEmployee(emp);
entities.SaveChanges();
这样倒是不用查询了,可是这样的话DeparmentID属性的改变绕过了Tracking机制,因为它没有出发PropetyChanged事件,怎么办呢?
同样的道理,更改(Edit/Update)雇员部门的操作也无法完成!