我有一个名为:IChocolateRepository 的存储库
它派生自通用存储库接口 IRepository<>,它定义了基本存储库功能(FindAll、Delete、Add 等)
现在,我需要编写一段代码,它将删除“数据库中所有巧克力在提供的日期之前的到期数据”(假设 ExpiryDate 是 Chocolate 模型类上的一个不可为空的属性。)
这是否属于存储库?
另外,示例实现会是什么样子?(我使用的是EF CTP5)
我有一个名为:IChocolateRepository 的存储库
它派生自通用存储库接口 IRepository<>,它定义了基本存储库功能(FindAll、Delete、Add 等)
现在,我需要编写一段代码,它将删除“数据库中所有巧克力在提供的日期之前的到期数据”(假设 ExpiryDate 是 Chocolate 模型类上的一个不可为空的属性。)
这是否属于存储库?
另外,示例实现会是什么样子?(我使用的是EF CTP5)
我不这么认为。
这不属于 ,而是属于使用这些Repository
操作的类。Transactions
Repositories
除非这只是太简单的应用程序,否则避免使用单独的层来避免复杂性会好得多。
如果您在基本接口中已经有 Remove(T item) 方法,那么添加 Remove(Predicate<'T'> condition) 以满足您的需求不会有任何伤害。
因此,您可以拥有一个非常通用的界面来删除满足给定谓词的所有内容,而不是删除一个特定项目。
我有一个小项目(大学学位的 FYP),由于时间限制,我不知道更好,我将更复杂的数据方法添加到存储库中,硬编码。
就我个人而言,我会将 Andrei Taptunov 的想法与谓词一起使用,以便数据访问代码包含在存储库类中。我在领域驱动的设计书中看到了事务,它的工作方式就像谓词一样。事务记录您想要实现的目标,并且存储库根据该请求工作。