假设:在可预见的未来,该解决方案将是MS,C#,.Net,SQL Server,Entity Framework和DAL,BLL等不会传递给外部来源,但可以在同一套件的单独应用程序中使用
答:我是否应该使用 Linq 和 IQueryable 来实现查询对象模式,而忘记处理存储库和/或 DAO ?
二.如果有任何符合模式的内容,我必须做什么/实现? 没有找到太多关于这个的例子。
我认为您在技术与模式中错过了一些东西。Linq 是某种低级技术,可以以非常有用的方式处理数据。但它不是一种模式,与它没有任何联系。
另一方面,如果要实现查询对象模式(这是一个非常好的主意,如果您需要实现非常简单的数据查询功能,并且可以使用倍数方式查询数据),则可以使用 Linq 或不使用 Linq 实现它。这完全取决于你。linq 本身无法帮助您实现查询对象。
此外,即使您决定在查询对象的帮助下实现数据访问层,这并不意味着您不需要使用服务或存储库模式。在大多数情况下,特别是如果您使用的是 reach 查询功能,您应该能够同时实现两者,因为很难实现具有您需要的所有方法的服务或存储库。
但无论如何,对于复杂的项目,允许用户使用IQueryable之外的DAL代码会导致严重的问题。简短示例:您的一些数据发生了变化,现在它包含 ID1 字段而不是 ID 字段。如果你有单一的方法来查询你的数据,你只需在一个地方更改代码,但如果你只允许在任何地方使用 IQueryable,那么你需要找到所有使用 ID 的地方并将其替换为 ID1。
而且,如果你的查询功能很差,那么你最不需要查询对象或存储库等。