转移到.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打开时,我也无法将连接用于其他任何事情,我可能也错了!
我通常不会在网格视图等用户控件中使用或要求所有'内置',因为我发现我需要自定义它们,这让我无法理解这一点,我很高兴循环通过像数组这样的简单构造或收藏。
罗尔夫
答案 0 :(得分:1)
在经典ASP中,当您获得RecordSet
时,您与数据库建立了开放式连接,就像DataReader
一样。您可以使用dr["ColumnName"]
方法在DataAdapter
时读取列,或将所有列值作为数组获取。
如果您需要一次阅读所有值,您可以坚持使用DataSet
并填写using
关于处理数据库连接的问题,可以使用{{1}}语句,因为它会处理该连接并将其返回到框架连接池。
如果你可以使用像Entity Framework这样的ORM,当你从业务对象中读取数据,正确地从数据库表中读取数据时,它将负责,所以这可能是一种更有效的方法。