0

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

我已经阅读过有关 ActiveRecords 的信息,并且我以前也使用过它,但我总是想要一些能让更改更容易、更省时的东西。

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

就像如果我想做分页,我需要传递 pageIndex 和 pageSize,如果不加载所有数据你会怎么做

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

我希望所有的选择/过滤/排序都发生在数据库级别

添加静态方法来执行这些操作看起来我会做错事

有没有优雅地处理这个问题的 ORM?

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

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

谢谢

4

1 回答 1

1

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

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

例如

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 提供程序,但相信我,您不必这样做。

于 2012-05-31T02:36:12.237 回答