我在思考该选择哪种方式,无法决定哪一种更好。也许你可以给我一个杀手级的想法 :)
我的问题是:我有一个建立在NHibernate之上的通用仓库。它的接口非常简单,例如Get(object id),Save,Delete等。有时这个接口运行良好,但有时却不行。例如,我的项目中有几个实体具有名为Code的属性(但并非全部)。我希望能够通过主键以及此属性获取实体。另一个情况是当我需要过滤某些具有日期或提供其他特定于各个实体的筛选条件的实体时。目前我正在考虑以下解决方案:
我的问题是:我有一个建立在NHibernate之上的通用仓库。它的接口非常简单,例如Get(object id),Save,Delete等。有时这个接口运行良好,但有时却不行。例如,我的项目中有几个实体具有名为Code的属性(但并非全部)。我希望能够通过主键以及此属性获取实体。另一个情况是当我需要过滤某些具有日期或提供其他特定于各个实体的筛选条件的实体时。目前我正在考虑以下解决方案:
- Linq - 我可以从每种类型的Repository返回一个IQueryable对象,然后使用linq表达式过滤查询。我不喜欢这个想法,因为如果我走这条路,我看不到Repository背后的原因。
- 特定于实体的存储库 - 在这里,我可以在通用存储库之上构建一个特定于实体的存储库。它将具有诸如Get(DateTime dateFrom, DateTime dateTo)等方法。缺点是我必须为每个实体对象创建一个存储库类。好处是它将更容易地将对象图持久化/删除到数据库中,因为它知道实体的依赖关系。
- 请告诉我 :)