Мне нужно написать приложение ASP.NET, которое подключается к нашей устаревшей базе данных IBM Universe, и мы используем продукт под названием mv.net, который позволяет нам подключаться, читать, писать, выбирать, запускать серверные программы и т. д.
Я хочу, чтобы код повторялся как можно меньше, но я также хочу, чтобы передача данных была как можно меньше.
Чтобы открыть соединение, мы должны сначала получить ссылку на учетную запись, используя такой код:
mvAccount myAccount = new mvAccount(serverName, login);
Затем мы можем прочитать элемент:
mvFile myInvoiceFile = myAccount.FileOpen("INVOICE");
mvItem myInvoiceRecord = myInvoiceFile.Read(invoiceID);
Тогда мы закончили:
myAccount.Logout();
У меня есть класс для каждого модуля, поэтому у меня может быть СЧЕТ, ЗАКАЗ НА ПОКУПКУ, RMA, ЗАПРОС, ОТПРАВКА и так далее. В INVOICE мне может понадобиться доступ к нескольким таблицам, таким как CUSTOMER, INVOICE, TERMS, SHIPVIA и т. д.
Что я планировал сделать, так это создать класс под названием TechDB, который является именем нашей базы данных, и поместить туда код, поэтому в моем классе INVOICE я могу просто сказать:
TechDB connection = new TechDB();
mvItem myInvoiceRecord = connection.Read("INVOICE", invoiceID)
Когда я это сделаю, мой класс TechDB откроет соединение, прочитает запись, а затем выйдет из системы за один шаг.
Я думаю, что иду по правильному пути, но, пожалуйста, дайте мне знать, если нет. Вот мои проблемы с этим:
Как мне вернуть ошибки моего класса INVOICE? Например, ошибки могут возникать, если мы не можем подключиться к базе данных, не можем открыть файл, не можем прочитать запись.
Что, если мне тогда нужно будет взять некоторые данные из моего СЧЕТА, а затем прочитать таблицу УСЛОВИЯ. Мне бы не хотелось открывать новое соединение с базой данных, когда я только что открыл его.
Должен ли я вызывать метод Dispose для всех классов, у которых есть это? Например, у mvAccount есть метод Dispose. Ни в одной документации не говорится, что это нужно вызывать, но должен ли я после Logout()?
Могу ли я создать метод Dispose в классе TechDB, который выполняет myAccount.Logout()? Таким образом, соединение останется открытым, и я смогу закрыть его из класса INVOICE, когда полностью закончу с ним?
Дайте мне несколько мнений о том, как лучше всего справиться с этим? Моя цель — надежное приложение, которое легко модифицировать и как можно меньше повторять код.