当前位置:  开发笔记 > 数据库 > 正文

临时数据和存储库模式

如何解决《临时数据和存储库模式》经验,为你挑选了0个好方法。

从存储库返回ad hoc(自定义大小写)数据的推荐方法是什么?这些数据不适合任何模型实体或扩展某些模型实体?

101例子是无处不在的hello word应用程序:博客系统.假设您要加载帖子列表,其中帖子条目具有Post实体中不存在的一些其他信息.假设这是评论的数量以及上次评论的日期和时间.如果使用普通的旧SQL并直接从数据库中读取数据,这将非常简单.如果我无法负担为每个帖子加载评论的整个集合,我应该如何以最佳方式使用存储库模式,并且我想在一个数据库中执行它?这种情况有没有常用的模式?现在假设您有一个中等复杂的Web应用程序,其中每个页面需要稍微不同的自定义数据,并且无法加载完整的层次结构(性能,内存要求等).

一些随意的想法:

    向每个模型添加属性列表,这些属性可以由自定义数据填充.

    子类模型实体,并为每个子类创建自定义读取器.

    使用LINQ,撰写即席查询和读取匿名类.

注意:我最近问了一个类似的问题,但它似乎过于笼统,并没有引起太多关注.

例:

根据以下答案中的建议,我将添加一个更具体的例子.这是我试图描述的情况:

IEnumarable posts = repository.GetPostsByPage(1);
foreach (Post post in posts)
{

    // snip: push post title, content, etc. to view

    // determine the post count and latest comment date
    int commentCount = post.Comments.Count();
    DateTime newestCommentDate = post.Comments.Max(c => c.Date);

    // snip: push the count and date to view

}

如果我不做任何额外的事情并使用现成的ORM,这将导致n + 1个查询或可能一个查询加载所有帖子和评论.但最好的情况是,我希望能够只执行一个SQL,它会为每个帖子返回一行,包括帖子标题,正文等,以及评论计数和最近的评论日期.这在SQL中是微不足道的.问题是我的存储库无法读取并将此类数据放入模型中.最大日期和计数在哪里?

我不是问怎么做.您可以随时以某种方式执行此操作:向存储库添加额外的方法,添加新类,特殊实体,使用LINQ等,但我想我的问题如下.为什么存储库模式和正确的模型驱动开发如此被广泛接受,但它们似乎并没有解决这个看似非常普遍和基本的情况.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有