在哪里放置'使用通用存储库时的特定函数

本文关键字:函数 存储 在哪里 | 更新日期: 2023-09-27 18:12:28

我想知道当使用通用存储库模式时,放置类型特定函数的最佳位置在哪里。

我的通用Repository<T>有方法的东西,如GetMany()等,但在哪里是最明智的位置放置函数特定于一个类型?

一个简单的例子是,假设我有一个'User'类型,我想要一个函数,而不是带回用户的名字/姓氏,并要求我在返回对象集时将它们粘合在一起,可以返回FirstName + " " + LastName作为' Username '。

我继承的以前的非存储库模式实现使用EF类型上的部分类来提供这些扩展方法,但是当使用存储库时,我有点不确定将这些类型的函数移动到哪里。

任何想法都将大有帮助,

欢呼,Doug

在哪里放置'使用通用存储库时的特定函数

下面的链接解释了如何指定选择,而不是扩大通用存储库的契约,常用的技术是子类化通用存储库以实现特定的存储库

EF少

 public class CustomerRepository : GenericRepository<Customer>, ICustomerRepository
{
    public CustomerRepository(ObjectContext context) : base(context) { }
    public IList<Customer> NewlySubscribed()
    {
        var lastMonth = DateTime.Now.Date.AddMonths(-1);
        return GetQuery().Where(c => c.Inserted >= lastMonth)
        .ToList();
    }
    public Customer FindByName(string firstname, string lastname)
    {
        return GetQuery().Where(c => c.Firstname == firstname && c.Lastname == lastname).FirstOrDefault();
    }
}

您可以将您的函数添加为用于新婚订阅()

我已经创建了类似的东西,但我所有的类型特定的东西是从Repository<T>派生的子类。通用的东西应该保持通用。