Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数据库中获取数据最简单的方法是什么?_C#_Coding Style_Class Design_U2_Universe - Fatal编程技术网

C# 从数据库中获取数据最简单的方法是什么?

C# 从数据库中获取数据最简单的方法是什么?,c#,coding-style,class-design,u2,universe,C#,Coding Style,Class Design,U2,Universe,我必须编写一个ASP.NET应用程序来连接我们的传统IBM Universe数据库,我们正在使用一个名为mv.NET的产品,它允许我们连接、读取、写入、选择、运行服务器端程序等 我希望尽可能少的代码重复,但我也希望尽可能少的数据传输 为了打开连接,我们必须首先使用以下代码获取对帐户的引用: mvAccount myAccount = new mvAccount(serverName, login); 然后我们可以阅读一个项目: mvFile myInvoiceFile = myAccount.

我必须编写一个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、REQ、装运等。在INVOICE中,我可能需要访问多个表,如CUSTOMER、INVOICE、TERMS、SHIPVIA等

我计划创建一个名为TechDB的类,它是我们数据库的名称,并将代码放在其中,因此在我的INVOICE类中,我可以说:

TechDB connection = new TechDB();
mvItem myInvoiceRecord = connection.Read("INVOICE", invoiceID)
当我这样做时,我的TechDB类将打开连接,读取记录,然后一步全部注销

我想我正走在正确的道路上,但如果没有,请告诉我。以下是我的问题:

如何返回发票类中的错误?例如,如果无法连接到数据库、无法打开文件或无法读取记录,则可能会发生错误

如果我需要从发票中提取一些数据,然后阅读术语表,该怎么办。我不想在刚打开一个数据库时就必须打开一个新的数据库连接

我应该对所有具有此属性的类调用Dispose方法吗?例如,mvAccount有一个Dispose方法。没有一个文档说要调用它,但是我应该在注销后调用它吗

我可以在TechDB类上创建一个Dispose方法来执行myAccount.Logout吗?这样,连接将保持打开状态,并且当我完全使用它时,我可以从我的INVOICE类关闭它


给我一些最好的处理方法的意见?我的目标是一个健壮的应用程序,它易于修改,并且尽可能少的代码重复。

我会使用闭包,我认为对于C,您有委托。比如:

MyAccount.loginAndDo(servername, login, delegate(account){ invoice = account.read("INVOICE"); . . . }); 在loginAndDo中,您将登录,调用代理,然后关闭帐户

自定义异常类 一个想法是构造批处理请求,一个委托列表。 按照3/4。在我的例子中,我的所有数据访问对象都继承自一个类,该类包含对连接的静态引用。我对在Dispose中实现断开逻辑犹豫不决,因为可能会出现断电或系统崩溃等情况,并且连接没有释放