Sin el marco de la entidad, debe escribir el código que lee los valores del lector de datos en una instancia de su AccountInfo
clase:
public static AccountInfo GetAccountInfo(string accountNumber)
{
AccountInfo result = null;
using(var conn = new NpgsqlConnection("..."))
{
conn.Open();
using(var command = new NpgsqlCommand("SELECT * FROM sms.get_accounts_info(@AccountNumber); ", conn))
{
command.Parameters.AddWithValue("@AccountNumber", accountNumber);
using(var dr = command.ExecuteReader())
{
if(dr.HasRows && dr.Read())
{
result = new AccountInfo {
accountNumber = dr["accountNumber"].ToString(),
balance = dr["balance"].ToString(),
interestRate = Convert.ToInt32(dr["interestRate"]),
accountName = dr["accountName"].ToString()
};
}
}
}
}
return result;
}
Tenga en cuenta que el tipo de devolución de la función se ha cambiado a AccountInfo
, previamente cadena. Además, se limita a leer solo un registro, si una llamada a sms.get_accounts_info
podría devolver más de un disco, es otra historia. Simplemente supuse que account_number
es una clave principal en account_holders
mesa.
Algunos detalles requieren su atención, por ejemplo, balance
es dinero en la base de datos, pero cadena en la clase. Además, no sabía si y cómo product
(base de datos) y accountType
(clase) correspondería, así que lo omití.
Las conexiones de base de datos, los comandos y los lectores de datos son IDisposable
y debe estar envuelto en using
bloques.