我已经看到在我从事的一个项目中解决了同样的问题,方法是将查询存储在 XML 中,并在运行时将 XML 加载到自定义的 StoredQueriesCache 对象中。要获取查询,我们将调用 StoredQueriesCache 对象上的方法并传递查询名称(在 XML 中定义),然后它将返回查询。
写这样的东西相当简单。XML 如下所示...
<Query>
<Name>SomeUniqueQueryName</Name>
<SQL>
SELECT someColumn FROM someTable WHERE somePredicate
</SQL>
</Query>
每个存储的查询都有一个元素。XML 将在应用程序启动时从文件加载到内存中,或者根据您的需要,它可以从文件中延迟加载。然后,保存 XML 的 StoredQueriesCache 对象将具有按名称返回单个查询的方法。以我的经验,查询中的注释从来没有引起任何问题,因为换行符是 XML 节点内部文本的一部分,但是如果您希望检索查询的 StoredQueriesCache 方法可以解析出注释。
我发现这是存储查询的最有组织的方式,无需将它们嵌入代码中,也无需使用存储过程。老实说,应该有一个图书馆可以为您做到这一点;也许我会写一个!