2009-01-30 50 views
0

我必须写一个连接到我们的传统IBM数据库宇宙的ASP.NET应用程序,我们使用的是被称为mv.net什么是最干的方式获得的数据我的数据库?

产品,它允许我们连接,读,写,选择,运行服务器端程序,等等。

我想尽可能少的代码重复地,但我也希望尽可能少的数据传输尽可能好。

为了打开一个连接,我们必须首先得到使用的代码帐户的引用,例如:

mvAccount myAccount = new mvAccount(serverName, login); 

然后,我们可以读出一个项目:

mvFile myInvoiceFile = myAccount.FileOpen("INVOICE"); 
mvItem myInvoiceRecord = myInvoiceFile.Read(invoiceID); 

然后我们我们完成:

myAccount.Logout(); 

我有每个模块的类,所以我可以具有发票,PURCHASE_ORDER,RMA,REQ,装运,和因此 上。在INVOICE中,我可能需要访问多个表格,例如CUSTOMER,INVOICE,TERMS,SHIPVIA等。

我打算做的是创建一个名为TechDB的类,它是我们数据库的名称并将代码放在那里所以在我的发票类我只能说:

TechDB connection = new TechDB(); 
mvItem myInvoiceRecord = connection.Read("INVOICE", invoiceID) 

当我做我的TechDB类将注销所有在一步打开连接,读取记录,然后。

我想我得走正确的道路,但请让我知道如果没有。这是我的问题:

  1. 如何返回错误我的INVOICE类?例如,如果我们无法连接到数据库,无法打开文件,无法读取记录,则可能会发生错误。

  2. 如果我再需要从我的发票需要一些数据,然后阅读条款表。我不想打开一个连接到数据库的新连接。

  3. 我应该呼吁有此所有类的Dispose方法?例如,mvAccount具有Dispose方法。没有文档说要调用它,但我应该在Logout()之后?

  4. 我可以在执行myAccount.Logout()的TechDB类上创建一个Dispose方法吗?那样,连接就会保持开放,当我完全完成它时,我可以从INVOICE类中关闭它?

给我一些关于处理这个问题的最佳方法的意见吗?我的目标是一个强大的应用程序,它很容易修改,并尽可能少地重新编写代码。

回答

1

我会使用闭包,我认为对于C#你有代表。所以像这样:

 
MyAccount.loginAndDo(servername, login, delegate(account){ 
    invoice = account.read("INVOICE"); 
    . 
    . 
    . 
}); 

在loginAndDo,您将登录,调用委托,然后关闭该帐户。

0
  1. 自定义异常类
  2. 一个想法是建造一批请求,(委托列表)。

按照3/4。就我而言,我的所有数据访问对象都是从一个持有对连接的静态引用的类继承而来的。我很犹豫在Dispose中实现断开逻辑,因为可能存在断电或系统崩溃等问题,而且连接没有释放。

相关问题