我有一个名为:IChocolateRepository
的存储库它源自通用存储库接口IRepository<>它定义了基本的存储库函数(FindAll,Delete,Add等)
现在,我需要编写一段代码,在提供的日期之前删除“数据库中所有带有到期数据的巧克力”(假设ExpiryDate是Chocolate模型类中的一个不可为空的属性。)< / p>
这属于存储库吗?
此外,示例实现如何? (我使用的是EF CTP5)
答案 0 :(得分:2)
我不这么认为。
这不属于Repository
,而是属于使用这些Transactions
操作Repositories
的类。
除非这是一个过于简单的应用程序,否则避免单独的层以避免复杂性会更好。
答案 1 :(得分:2)
如果你已经在base interface中有Remove(T item)方法了 如果你添加Remove(Predicate&lt;'T'&gt;条件)以满足你的需要,它不会受到伤害。
因此,您可以使用非常通用的界面来删除满足给定谓词的所有内容,而不是删除一个特定项。
答案 2 :(得分:0)
我有一个小项目(大学学位的FYP),由于时间限制,我不知道更好,我将更复杂的数据方法添加到存储库,硬编码。
我个人会将Andrei Taptunov的想法用于谓词,以便数据访问代码包含在存储库类中。我看过用域驱动设计书写的交易,无论如何都像谓词一样工作。事务记录了您想要实现的内容,并且存储库可以处理该请求。