【发布时间】:2011-08-18 13:45:54
【问题描述】:
我目前正在构建一个使用MySQL 数据库的框架。我不能使用实体框架的MySQL 实现,所以我试图找出概括搜索和分页功能的最佳方法。
最简单的解决方案是使用带有以下签名的存储库方法:
IList<Blah> GetSomething(string _query,
int _page,
int _pageSize,
out int _numPages)
但这似乎有点反OOD。
我的一个想法是创建一个带有ISearchParameter 和IPaging 对象的实用程序dll,域级别和存储库级别都可以访问,这将避免必须重新创建这两个接口并在每个接口中实现它们域和存储库。
public interface ISearchParameters
{
Direction Direction { get; set; }
string DirectionField { get; set; }
string Query { get; set; }
IList<string> SearchFields { get; set; }
}
public interface IPaging
{
int CurrentPage { get; set; }
int PageSize { get; set; }
int NumberOfPages { get; set; }
int GetQueryPage();
}
我通常会将 DTO 从存储库映射到域对象,但如果两个级别都引用此实用程序 .dll,那么在这两个级别之间传递 ISearchParameter 对象而不进行映射会是不好的设计吗?如果有,有没有更好的解决方案?
【问题讨论】:
标签: c# .net design-patterns domain-driven-design repository