Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq to sql 用于将DAL特定类(如LINQ到SQL类)投影到POCO'的模式名称;s_Linq To Sql_Design Patterns - Fatal编程技术网

Linq to sql 用于将DAL特定类(如LINQ到SQL类)投影到POCO'的模式名称;s

Linq to sql 用于将DAL特定类(如LINQ到SQL类)投影到POCO'的模式名称;s,linq-to-sql,design-patterns,Linq To Sql,Design Patterns,我在研究Codeplex上的代码。它有存储库接口和一个使用LINQ到SQL的实现。LINQ到SQL的结果被投影到存储库实现中的POCO对象。它看起来像: public IQueryable<Post> GetPosts() { return projectPosts(excludeNotYetPublished(getPostsQuery(siteID))); } public IQueryable GetPosts() { 返回项目帖子(不包括未发布的帖子(getPost

我在研究Codeplex上的代码。它有存储库接口和一个使用LINQ到SQL的实现。LINQ到SQL的结果被投影到存储库实现中的POCO对象。它看起来像:

public IQueryable<Post> GetPosts()
{
    return projectPosts(excludeNotYetPublished(getPostsQuery(siteID)));
}
public IQueryable GetPosts()
{
返回项目帖子(不包括未发布的帖子(getPostsQuery(siteID));
}
这是一个有趣的模式,所以我想知道它是否有一个特定的名称


谢谢

数据映射器。看到这里提到的了吗

“在这样的系统中,在集中查询构造代码的映射层上构建另一个抽象层是值得的”

请注意,对此有不同的看法。我想说的是,那些订阅这样做的人声称linq2sql类是特定于数据访问技术的,所以我猜他们将其视为存储库的一个实现细节


也许您的意思是在返回IQueryable的“存储库”上请求一个名称。我不认为有一个共同认可的名称。Rob Connery在他的asp.net mvc店面系列中使用了此选项:。如果您查看上面的旧博客文章,您会发现调用存储库实际上是有争议的。

数据映射器。看到这里提到的了吗

“在这样的系统中,在集中查询构造代码的映射层上构建另一个抽象层是值得的”

请注意,对此有不同的看法。我想说的是,那些订阅这样做的人声称linq2sql类是特定于数据访问技术的,所以我猜他们将其视为存储库的一个实现细节


也许您的意思是在返回IQueryable的“存储库”上请求一个名称。我不认为有一个共同认可的名称。Rob Connery在他的asp.net mvc店面系列中使用了此选项:。如果你看一下上面的老博客文章,你会发现调用存储库实际上是有争议的。

我认为这更多的是数据传输对象(DTO)模式,在这种模式中,结果被转换为DTO,以便跨层传输。请参阅。

我认为这更像是数据传输对象(DTO)模式,在这种模式中,结果将转换为DTO,以便跨层传输。请参阅。

@John不是真的,使用引用的方法返回的对象是域对象。对不起,我不明白是哪种“引用的方法”。在DTO的情况下,对象不是域对象,而是向域对象传递数据或从域对象传递数据的DTO对象。它们的结构与域对象相似,但它们没有行为,只有数据。我指的是michielvoo在问题上发布的方法。在上面的示例中,Post是一个域对象(而不是DTO)。虽然你可能是说linq2sql类是DTO?@John不是真的,但使用引号方法返回的对象是域对象。对不起,我不明白,哪种“引号方法”。在DTO的情况下,对象不是域对象,而是向域对象传递数据或从域对象传递数据的DTO对象。它们的结构与域对象相似,但它们没有行为,只有数据。我指的是michielvoo在问题上发布的方法。在上面的示例中,Post是一个域对象(而不是DTO)。虽然您可能认为linq2sql类是DTO?但需要一些粘合代码才能将LINQ映射到SQL类(在我看来,特定于数据访问技术)到POCO。另外,我觉得由于IQueryable和Expression是BCL的一部分,它们将逐渐成为设计模式(存储库和规范)的一部分。谢谢需要一些粘合代码才能将LINQ到SQL类(在我看来,特定于数据访问技术)映射到POCO。另外,我觉得由于IQueryable和Expression是BCL的一部分,它们将逐渐成为设计模式(存储库和规范)的一部分。谢谢