エンティティフレームワークがない場合は、データリーダーから値を読み取るコードをAccountInfo
のインスタンスに書き込む必要があります。 クラス:
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;
}
関数の戻りタイプがAccountInfo
に変更されていることに注意してください。 、以前は文字列。また、sms.get_accounts_info
を1回呼び出すと、1つのレコードのみを読み取るように制限されます。 複数のレコードを返す可能性がありますが、それは別の話です。 account_number
account_holders
の主キーです テーブル。
balance
など、いくつかの詳細には注意が必要です。 データベースではお金ですが、クラスでは文字列です。また、product
かどうかとその方法もわかりませんでした (データベース)およびaccountType
(クラス)が対応するので省略しました。
データベース接続、コマンド、およびデータリーダーはIDisposable
using
でラップする必要があります ブロック。