従来の IBM ユニバース データベースに接続する ASP.NET アプリケーションを作成する必要があり、サーバー側プログラムの接続、読み取り、書き込み、選択、実行などを可能にする mv.net という製品を使用しています。
コードの繰り返しをできるだけ少なくしたいのですが、データ転送もできるだけ少なくしたいと考えています。
接続を開くには、まず次のようなコードを使用してアカウントへの参照を取得する必要があります。
mvAccount myAccount = new mvAccount(serverName, login);
次に、アイテムを読み取ることができます。
mvFile myInvoiceFile = myAccount.FileOpen("INVOICE");
mvItem myInvoiceRecord = myInvoiceFile.Read(invoiceID);
これで完了です。
myAccount.Logout();
モジュールごとにクラスがあるため、INVOICE、PURCHASE_ORDER、RMA、REQ、SHIPMENT などがある場合があります。INVOICE 内で、CUSTOMER、INVOICE、TERMS、SHIPVIA などの複数のテーブルにアクセスする必要がある場合があります。
私が計画していたのは、データベースの名前である TechDB というクラスを作成し、そこにコードを配置することでした。そのため、私の INVOICE クラスでは次のように言えます。
TechDB connection = new TechDB();
mvItem myInvoiceRecord = connection.Read("INVOICE", invoiceID)
これを行うと、私の TechDB クラスは接続を開き、レコードを読み取り、すべて 1 ステップでログアウトします。
私は正しい道を進んでいると思いますが、そうでない場合はお知らせください。これに関する私の問題は次のとおりです。
INVOICE クラスでエラーを返すにはどうすればよいですか? たとえば、データベースに接続できない、ファイルを開くことができない、レコードを読み取ることができない場合、エラーが発生する可能性があります。
次に、INVOICE からデータを取得して TERMS テーブルを読み取る必要がある場合はどうでしょうか。データベースを開いたばかりのときに、データベースへの新しい接続を開く必要はありません。
これを持つすべてのクラスで Dispose メソッドを呼び出す必要がありますか? たとえば、mvAccount には Dispose メソッドがあります。ドキュメントのどれもそれを呼び出すとは言っていませんが、Logout() の後にすべきですか?
myAccount.Logout() を実行する Dispose メソッドを TechDB クラスに作成できますか? そうすれば、接続は開いたままになり、完全に完了したら INVOICE クラスから閉じることができますか?
これを処理する最善の方法について意見を聞かせてください。私の目標は、変更が容易で、コードの繰り返しができるだけ少ない堅牢なアプリケーションです。