0

假设:在可预见的未来,该解决方案将始终是 MS、C#、.Net、SQL Server、Entity Framework 和 DAL、BLL 等不会传递给外部源,但可以在同一套件的不同应用程序中使用

A. 我应该使用 Linq 和 IQueryable 来实现 Query 对象模式而忘记处理存储库和/或 DAO 吗?

B. 如果有什么适合模式,我必须做什么/实施?还没有找到太多的例子。

4

1 回答 1

0

我认为你错过了技术与模式之间的一些东西。Linq 是一种以非常有用的方式处理数据的低级技术。但这不是一种模式,与它没有任何联系。

另一方面,如果您想实现查询对象模式(这是一个很好的主意,如果您需要实现非常简单的数据查询功能,并且您可以使用倍数方式查询您的数据),您可以使用 Linq 或没有。这完全取决于你。并且 linq 本身无法帮助您实现查询对象。

此外,即使您决定在查询对象的帮助下实现数据访问层,这并不意味着您不需要使用服务或存储库模式。在大多数情况下,特别是如果您使用到达查询功能,您应该能够同时实现这两种功能,因为很难实现具有您需要的所有方法的服务或存储库。

但无论如何,对于复杂的项目,允许用户在你的 DAL 代码之外使用 IQueryable 会导致严重的问题。简短示例:您的一些数据更改,现在它包含 ID1 字段 insted ID 字段。如果您有单一的方法来查询您的数据,您只需在一个地方更改代码,但如果您只允许在任何地方使用 IQueryable,那么您需要找到所有使用 ID 的地方并将其替换为 ID1。

而且,如果您的查询功能很差,那么您最不需要查询对象或存储库等。活动记录模式就足够了。

于 2013-01-23T23:50:10.693 回答