我有多個用於進行數據庫訪問的類,每個類都包含一組用於從數據庫提取信息並將其傳遞到另一個對象的方法。問題是大多數方法都會提取到不同的對象中。什麼將提取到的接口這幫助收拾我的代碼,減少數據庫連接的這樣的數字提取到接口
例如類
public class RequestDB
{
public RequestDB(string connectionStringName)
{
connectionString = connectionStringName;
}
public void UpdateRequest(AssignmentRequest request)
{
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("UpdateAssignmentRequest", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@assignmentRequestId", SqlDbType.Int));
cmd.Parameters["@assignmentRequestId"].Value = request.RequestID;
cmd.Parameters.Add(new SqlParameter("@jobTitle", SqlDbType.VarChar));
...
try
{
// Move to a cache class library
con.Open();
cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
Log.Write("Exception", "Unknown", "RequestDB", "UpdateRequest", request.ToString(), ex.Message);
throw new ApplicationException("Data source error.");
}
finally
{
con.Close();
}
}
public int RequestAssignment(AssignmentRequest request)
{
int result = 0;
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("RequestAssignment", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@clientUserId", SqlDbType.Int));
cmd.Parameters["@clientUserId"].Value = request.RequestingUserID;
...
try
{
// Move to a cache class library
con.Open();
var reader = cmd.ExecuteReader();
reader.Read();
result = reader.GetInt32(reader.GetOrdinal("id"));
}
catch (SqlException ex)
{
Log.Write("Exception", "Unknown", "RequestDB", "RequestAssignment", request.ToString(), ex.Message);
throw new ApplicationException("Data source error.");
}
finally
{
con.Close();
}
return result;
}
public List<AssignmentRequest> GetAllAssignmentRequests()
{
var result = new List<AssignmentRequest>();
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("GetAssignmentRequests", con);
cmd.CommandType = CommandType.StoredProcedure;
try
{
// Move to a cache class library
con.Open();
var reader = cmd.ExecuteReader();
while (reader.Read())
{
result.Add(new AssignmentRequest()
{
RequestID = reader.GetInt32(reader.GetOrdinal("requestId")),
RequestingUserID = reader.GetInt32(reader.GetOrdinal("clientUserId")),
...
});
}
}
catch (SqlException ex)
{
Log.Write("Exception", "Unknown", "RequestDB", "GetAllAssignmentRequests", "", ex.Message);
throw new ApplicationException("Data source error.");
}
finally
{
con.Close();
}
return result;
}
public AssignmentRequest GetAssignmentRequestById(int requestId)
{
var result = new AssignmentRequest();
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("GetAssignmentRequestByID", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@requestId", SqlDbType.Int));
cmd.Parameters["@requestId"].Value = requestId;
try
{
// Move to a cache class library
con.Open();
var reader = cmd.ExecuteReader();
reader.Read();
result = new AssignmentRequest()
{
RequestID = reader.GetInt32(reader.GetOrdinal("requestId")),
RequestingUserID = reader.GetInt32(reader.GetOrdinal("clientUserId")),
JobTitle = reader.GetString(reader.GetOrdinal("jobTitle")),
Department = reader.GetString(reader.GetOrdinal("department")),
...
};
}
catch (SqlException ex)
{
Log.Write("Exception", "Unknown", "RequestDB", "GetAssignmentRequestById", requestId.ToString(), ex.Message);
throw new ApplicationException("Data source error.");
}
finally
{
con.Close();
}
return result;
}
public List<AssignmentRequest> GetRequestHistoryByClientUserId(int clientUserId)
{
var result = new List<AssignmentRequest>();
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("GetRequestHistoryByClientUserId", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@clientUserId", clientUserId);
try
{
// Move to a cache class library
con.Open();
var reader = cmd.ExecuteReader();
while (reader.Read())
{
var request = new AssignmentRequest()
{
RequestID = reader.GetInt32(reader.GetOrdinal("requestId")),
RequestingUserID = reader.GetInt32(reader.GetOrdinal("clientUserId")),
JobTitle = reader.GetString(reader.GetOrdinal("jobTitle")),
...
result.Add(request);
}
}
catch (SqlException ex)
{
Log.Write("Exception", "Unknown", "RequestDB", "GetRequestHistoryByClientUserId", "", ex.Message);
throw new ApplicationException("Data source error.");
}
finally
{
con.Close();
}
return result;
}
}