在哪里放置'使用通用存储库时的特定函数
本文关键字:函数 存储 在哪里 | 更新日期: 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>
派生的子类。通用的东西应该保持通用。