我有三个像这样的实体 .
雇员:
ID
名称
EmployeeDepartment:
ID
DepartmentID的
员工ID
部门:
ID
名称
员工<< ----> EmployeeDepartment <---- >>系
假设员工和部门有多对多关系,我想在"Accounting"部门获得所有员工姓名?
如果我使用SQL查询,我将简单地使用:
select employee.name from Employee, EmployeeDepartment, Department where employee.id = employeeDepartment.employeeID and Department.id = EmployeeDepartment.departmentID and Department.name = 'Accounting'
但是,我如何在Core Data中做同样的事情?
1 回答
核心数据是一个对象图管理器,而不是关系数据库,所以试图强制它进入关系数据库模式将导致痛苦 . 您的EmployeeDepartment实体就是一个很好的例子;您需要在关系数据库中实现Employee和Department之间的多对多关系,但在Core Data中根本没有必要 . 相反,只需为Employee提供
departments
属性,为Department提供employees
属性,然后在两个实体之间添加多对多关系 .现在,如果要获取Accounting中的所有员工,则可以使用与Accounting匹配的谓词执行实体Department的获取请求 . 拥有该对象后,您只需访问其
employees
属性即可获取员工列表 .