我发现我的 C# 应用程序使用大量样板文件执行大量查询,这使我的代码空间变得混乱。我也想避免重复,但我不确定如何编写一个通用的方法来做到这一点。
我正在使用 ODP 访问 Oracle 数据库。我不能使用 Linq,因为我们的数据仓库人员拒绝指定主键,而且对 Linq 的 ODP 支持似乎是……他们宁愿让你使用他们的平台。
我不能真正返回一个列表,因为每个查询都返回不同数量的不同类型。
string gufcode = String.Empty;
double cost = 0.0;
OracleCommand GUFCommand2 = thisConnection.CreateCommand();
String GUFQuery2 = "SELECT GUF_ID, COST_RATE FROM SIMPLE_TABLE";
GUFCommand2.CommandText = GUFQuery2;
OracleDataReader GUFReader2 = GUFCommand2.ExecuteReader();
while (GUFReader2.Read())
{
if (GUFReader2[0/**GUF_CODE**/] != DBNull.Value)
{
gufcode = Convert.ToString(BUFReader2[0]);
}
if (GUFReader2[1/**COST_RATE**/] != DBNull.Value)
{
cost = Convert.ToDouble(GUFReader2[1]);
}
effortRatioDictionary.Add(bufcode, percentageOfEffort);
}
GUFReader2.Close();
但是确实有更多的术语和更多这样的查询。我会说 15 个左右的查询 - 有些查询返回了多达 15 个左右的字段。
到处复制/粘贴这个样板会导致很多火灾:例如,如果我不更新复制粘贴中的所有内容,我将关闭错误的阅读器(或更糟)向数据库发送不同的查询字符串。
我希望能够做这样的事情:
string gufQuery = "SELECT GUF_ID, COST_RATE FROM SIMPLE_TABLE";
List<something> gufResponse = miracleProcedure(gufQuery, thisConnection);
所以大部分样板文件都消失了。
我正在寻找简单的东西。