如何使用Repository Pattern(或更合适的东西)实现这个?

时间:2011-01-29 06:28:59

标签: c# entity-framework entity-framework-4 repository-pattern entity-framework-ctp5

我有一个名为:IChocolateRepository

的存储库

它源自通用存储库接口IRepository<>它定义了基本的存储库函数(FindAll,Delete,Add等)

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

这属于存储库吗?

此外,示例实现如何? (我使用的是EF CTP5)

3 个答案:

答案 0 :(得分:2)

我不这么认为。

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

除非这是一个过于简单的应用程序,否则避免单独的层以避免复杂性会更好。

答案 1 :(得分:2)

如果你已经在base interface中有Remove(T item)方法了  如果你添加Remove(Predicate&lt;'T'&gt;条件)以满足你的需要,它不会受到伤害。

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

答案 2 :(得分:0)

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

我个人会将Andrei Taptunov的想法用于谓词,以便数据访问代码包含在存储库类中。我看过用域驱动设计书写的交易,无论如何都像谓词一样工作。事务记录了您想要实现的内容,并且存储库可以处理该请求。