【发布时间】:2010-02-24 12:27:46
【问题描述】:
我正在使用 NHibernate,并且员工和团队之间存在多对多关联。
现在我想显示所有员工及其团队成员的姓名。
可能性一:
- 使用 AutoMapper 并创建一个包含 Employee 属性和团队名称的 DTO(渴望加载团队)
- 在视图中显示 DTO
可能性2:
- 创建一个名为 EmployeeTeam 的新实体并将其与 NHibernate/FluentNHibernate 映射(该实体充当数据库中 Employee 和 Team 之间的关系表)
- 使用即时加载加载 TeamEmployee,包括 Employee 和 Team
- 显示 EmployeeTeam 实体
- 使用 EmployeeTeam 成员(EmployeeTeam.Employee.Name、EmployeeTeam.Team.Name)
可能性3:
- 作为可能性 1 和 2
- 为 EmployeeTeam 使用 DTO
可能性4:
- 使用 ICriteria API
- 使用 AliasToBeanResultTransformer(没用这个)
可能性5:
- 使用 LINQ 到 NHibernate
- 我认为我仍然需要 EmployeeTeam 实体(目前不在我的领域模型中)
解决这个问题的最佳做法是什么?
还有其他建议吗?
【问题讨论】:
-
这里您需要注意的一件事是 SELECT N+1 问题。也就是说,对于每个员工,您不会对他们的所有团队进行另一个查询。对于任何 ORM 策略,Eager fetching 都应该处理好它。
标签: c# nhibernate automapper dto