与旧的asp getarray()的等效模式

时间:2013-12-29 20:35:09

标签: c# asp.net razor

转移到.net并在没有MVC的情况下尝试使用razor进行c#,只需创建网页。

我使用自己的返回数组的类在无尽的经典ASP中创建了这种模式。

-open connection
-execute SQL
-get recordset
-stick in array (getrows)
-destroy recordset
-close connection
-return array and other stuff such as fieldnames, returned rows check/number and so on from the class.

然后在代码中我将遍历数组并构建UI并显示。

使用c#和razor进行渲染的.net中的等效模式是什么?我看到的所有示例似乎都在一个代码块中执行此操作,而没有真正使用datareader执行任何操作。

-open connection
-execute sql
-fill a datareader
-do while and dump to screen
-close/destroy connection/datareader

这种模式意味着我必须在页面主体中使用datareader来呈现所需的HTML并记得在最后关闭/销毁它,这在我看来效率较低,但我可能只是没有以正确的方式思考.net(仍处于解释脚本模式)!当一个datareader打开时,我也无法将连接用于其他任何事情,我可能也错了!

我通常不会在网格视图等用户控件中使用或要求所有'内置',因为我发现我需要自定义它们,这让我无法理解这一点,我很高兴循环通过像数组这样的简单构造或收藏。

罗尔夫

1 个答案:

答案 0 :(得分:1)

在经典ASP中,当您获得RecordSet时,您与数据库建立了开放式连接,就像DataReader一样。您可以使用dr["ColumnName"]方法在DataAdapter时读取列,或将所有列值作为数组获取。

如果您需要一次阅读所有值,您可以坚持使用DataSet并填写using

关于处理数据库连接的问题,可以使用{{1}}语句,因为它会处理该连接并将其返回到框架连接池。

如果你可以使用像Entity Framework这样的ORM,当你从业务对象中读取数据,正确地从数据库表中读取数据时,它将负责,所以这可能是一种更有效的方法。