Senza il framework di entità, devi scrivere il codice che legge i valori dal lettore di dati in un'istanza del tuo AccountInfo
classe:
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;
}
Nota che il tipo restituito della funzione è stato modificato in AccountInfo
, in precedenza stringa. Inoltre, è limitato alla lettura di un solo record, Se una chiamata a sms.get_accounts_info
potrebbe restituire più di un record, è una storia diversa. Ho solo supposto che account_number
è una chiave primaria in account_holders
tabella.
Alcuni dettagli richiedono la tua attenzione, ad esempio balance
è denaro nel database, ma stringa nella classe. Inoltre non sapevo se e come product
(database) e accountType
(classe) corrisponderebbe, quindi l'ho omesso.
Le connessioni al database, i comandi e i lettori di dati sono IDisposable
e dovrebbe essere racchiuso in using
blocchi.