我正在研究Codeplex上的Oxite project。它具有存储库接口,以及使用LINQ to SQL的实现。 LINQ to SQL结果被投射到存储库实现中的POCO对象。它看起来像:
public IQueryable<Post> GetPosts()
{
return projectPosts(excludeNotYetPublished(getPostsQuery(siteID)));
}
这是一个有趣的模式,所以我想知道它是否有一个特定的名称。
谢谢!
答案 0 :(得分:2)
Data Mapper。请参阅此处http://www.martinfowler.com/eaaCatalog/repository.html
“在这样的系统中,在查询构造代码集中的映射层上构建另一个抽象层是值得的。”
请注意,对此有不同的看法。我会说那些赞成这样做的人声称linq2sql类是特定于数据访问技术的,所以我猜他们认为它是存储库的实现细节。
也许你的意思是在“存储库”上要求一个返回IQueryable的名称。我认为没有一个共同商定的名称。 Rob Connery在他的asp.net mvc店面系列中使用了这个:http://blog.wekeroad.com/mvc-storefront。如果你查看它上面的旧博客文章,你可以看到调用存储库实际上是有争议的。
答案 1 :(得分:1)
我认为这更像是数据传输对象(DTO)模式,其中结果被转换为DTO以跨层传输。请参阅Data Transfer Object。