设计模式:积极记录性能和灵活性

时间:2012-05-31 02:22:31

标签: c# oop design-patterns

我即将开发一个新应用程序,并正在考虑最佳实践

我已经阅读过有关ActiveRecords的内容,之前我已经使用过它,但我总是想要一些可以让更改更容易,更省时的东西。

使用有效记录和其他ORM : 我相信这些方法会加载数据库中的所有记录,有时我可能只需要一两个

如果我想要进行分页,我需要传递pageIndex和pageSize,如何在不加载所有数据的情况下执行此操作

就像我想要WHERE子句中的多个字段一样 我不会根据我的标准加载所有记录并过滤

我希望所有选择/过滤/排序都在数据库级别进行

添加静态方法来执行这些操作看起来就像我做错了一样

是否有优雅处理的ORM?

我希望能够最大限度地控制应用程序流,以便在必要时轻松进行优化。

注意:我仍在研究 DAO和其他方法,但我希望对Active Record提出意见,以防我仍然想要使用它

由于

1 个答案:

答案 0 :(得分:1)

如果您使用的是C#3.5 +,我相信LinqIQueryable和正确的数据服务层可以解决您的问题。

  1. 寻呼。 IQueryable默认情况下,在调用toList()之前不会提交。您可以使用所有项目让您的数据存储返回IQueryable,但最后进行过滤和分页,只处理您需要的项目,
  2. e.g。

    var items = getAllItems(); // IQueyrable<Item>, from database
    
    var paged = items.Skip(50).Take(10); // Database still not queried
    paged.toList(); // Database return 10 items only
    
    1. 过滤和WHERE。与上述相同

    2. 大部分ORM都与Linq合作。例如。 NHibernate的

    3.   

      最大限度地控制应用程序流程。

      您可能需要编写自己的自定义Linq提供程序,但请相信我,您不必这样做。