这或多或少是一个一般性问题,而不是任何特定的 ORM 或语言:无论您的 ORM 偏好如何,都会出现这个问题。
映射多对多关系时,可以隐藏中间表或使中间表成为模型的一部分。如果中间表有超出关系的有价值数据,如何处理映射?
考虑下表:
CaseWorker (id, first_name, last_name)
CaseWorkerCases (case_worker_id, case_id, date_opened, date_closed)
Case (id, client_id, field_a, field_b)
作为一名程序员,我真的希望能够做到:
CaseWorker.Cases
比
CaseWorker.CaseWorkerCases.Cases
一方面,表 CaseWorkerCases 包含有用的数据,隐藏中间表使得访问该数据不太方便。另一方面,必须在中间表中导航会使访问案例的常见任务看起来很尴尬。
我认为一种解决方案可能是在模型中公开中间表,然后为 CaseWork 对象提供一个可以工作的包装器属性。就像是:
public IEnumerable<Case> Cases
{
get{return (from caseWorkerCase in this.CaseWorkerCases
select caseWorkerCase.Case);}
}
但这似乎也是错误的。