Bez rámce entity musíte napsat kód, který čte hodnoty ze čtečky dat, do instance vašeho AccountInfo
třída:
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;
}
Všimněte si, že návratový typ funkce byl změněn na AccountInfo
, dříve řetězec. Také je omezeno na čtení pouze jednoho záznamu, pokud jedno volání na sms.get_accounts_info
mohl vrátit více než jeden záznam, to je jiný příběh. Předpokládal jsem, že account_number
je primární klíč v account_holders
tabulka.
Některé detaily vyžadují vaši pozornost, například balance
jsou peníze v databázi, ale řetězec ve třídě. Také jsem nevěděl, zda a jak product
(databáze) a accountType
(třída) by odpovídalo, tak jsem to vynechal.
Databázová připojení, příkazy a čtečky dat jsou IDisposable
a měl by být zabalen do using
bloky.