Tanpa kerangka entitas, Anda perlu menulis kode yang membaca nilai dari pembaca data ke dalam instance AccountInfo Anda kelas:
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;
}
Perhatikan bahwa tipe pengembalian fungsi telah diubah menjadi AccountInfo , sebelumnya string. Juga, itu terbatas untuk membaca hanya satu catatan, Jika satu panggilan ke sms.get_accounts_info bisa kembali lebih dari satu catatan, itu adalah cerita yang berbeda. Saya hanya berasumsi bahwa account_number adalah kunci utama dalam account_holders tabel.
Beberapa detail membutuhkan perhatian Anda, misalnya balance adalah uang dalam database, tetapi string di kelas. Saya juga tidak tahu apakah dan bagaimana product (database) dan accountType (kelas) akan sesuai, jadi saya menghilangkannya.
Koneksi database, perintah, dan pembaca data IDisposable dan harus dibungkus dengan using blok.