1

我有一个名为:IChocolateRepository 的存储库

它派生自通用存储库接口 IRepository<>,它定义了基本存储库功能(FindAll、Delete、Add 等)

现在,我需要编写一段代码,它将删除“数据库中所有巧克力在提供的日期之前的到期数据”(假设 ExpiryDate 是 Chocolate 模型类上的一个不可为空的属性。)

这是否属于存储库?

另外,示例实现会是什么样子?(我使用的是EF CTP5)

4

3 回答 3

2

我不这么认为。

这不属于 ,而是属于使用这些Repository操作的类。TransactionsRepositories

除非这只是太简单的应用程序,否则避免使用单独的层来避免复杂性会好得多。

于 2011-01-29T07:04:59.900 回答
2

如果您在基本接口中已经有 Remove(T item) 方法,那么添加 Remove(Predicate<'T'> condition) 以满足您的需求不会有任何伤害。

因此,您可以拥有一个非常通用的界面来删除满足给定谓词的所有内容,而不是删除一个特定项目。

于 2011-01-29T07:11:26.363 回答
0

我有一个小项目(大学学位的 FYP),由于时间限制,我不知道更好,我将更复杂的数据方法添加到存储库中,硬编码。

就我个人而言,我会将 Andrei Taptunov 的想法与谓词一起使用,以便数据访问代码包含在存储库类中。我在领域驱动的设计书中看到了事务,它的工作方式就像谓词一样。事务记录您想要实现的目标,并且存储库根据该请求工作。

于 2011-01-29T22:43:28.857 回答