用于将DAL特定类(例如LINQ to SQL类)投影到POCO的模式名称

时间:2009-03-13 11:47:52

标签: linq-to-sql design-patterns

我正在研究Codeplex上的Oxite project。它具有存储库接口,以及使用LINQ to SQL的实现。 LINQ to SQL结果被投射到存储库实现中的POCO对象。它看起来像:

public IQueryable<Post> GetPosts()
{
    return projectPosts(excludeNotYetPublished(getPostsQuery(siteID)));
}

这是一个有趣的模式,所以我想知道它是否有一个特定的名称。

谢谢!

2 个答案:

答案 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