【发布时间】:2014-02-03 16:36:05
【问题描述】:
我需要关于 DDD(域驱动设计)以及存储库模式和封装的实施的建议。 据我了解,存储库模式使我能够将所有数据库访问逻辑放在一个地方,并将该逻辑从应用程序的其他部分抽象出来。 另一方面是 orm (Nhibernate, EntityFramework...),它支持 Linq 和 IQueryable。 我的强项是: 1. 如果我使用存储库,那么我不应该使用 IQueryable 作为我的返回类型 bust,而是使用 IEnumerable。因为如果我使用 IQueryable 那么这将允许将数据库代码泄漏到其他应用程序层(IE 将允许其他开发人员在他们不属于的 mvc 控制器中进行查询)。 但是每个控件都使用 IQueryable 来访问数据并且这样做是因为更容易。 如果我使用 IQueryable 作为我的存储库方法的返回类型,那么: - 我允许其他开发人员在应用程序的其他层进行数据库查询(我认为这应该是不可能的) - 它会将我的域实体(域模型)泄漏到应用程序的其他层(即用户界面),但不应该,而是应该使用 DTO。
我的问题是 IQueryable 是 DDD 中的一个好习惯吗?
【问题讨论】:
标签: domain-driven-design repository-pattern ddd-repositories