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