我們的應用程序幾乎全部使用自定義的DataAccessLayer類,並且在其中我們使用數據訪問應用程序塊(當前版本2)。我們偶爾得到臭名昭着的「GetOrdinal」錯誤。我們沒有使用超出方法的連接。使用DAAB版本2.下面我們是是我們的DAL方法一個典型的例子:處理自定義數據訪問層引用
Public Function MyDALMethod(ByVal Param1 As Integer, ByVal Param2 As Integer) As System.Data.IDataReader
Dim db As Database = DatabaseFactory.CreateDatabase()
Dim sqlCommand As String = "usp_MyProcedure"
Dim dbCommand As DbCommand = db.GetStoredProcCommand(sqlCommand)
db.AddInParameter(dbCommand, "Param1", DbType.Int32, MyParam1)
db.AddInParameter(dbCommand, "Param2", DbType.Int32, MyParam2)
Return db.ExecuteReader(dbCommand)
End Function
在我們的代碼,我們只是實例化一個DAL var和調用所需的方法。使用DataReader後,引用代碼將關閉,處理並將讀取器設置爲無。但是,對於DAL的引用沒有做任何事情。我想知道這是否是我們問題的一部分。一個典型的方法將使用我們的DAL是這樣的:
Dim DAL as New DataAccessLayer
Dim dbReader as system.data.idatareader
dbreader = DAL.MyDALMethod(parm1, parm2)
While dbreader.read
i = dbreader.items("column1")
j = dbreader.items("column2")
End While
dbreader.close()
dbreader.dispose()
dbreader = nothing
我的主要問題是應該以某種方式處理這些DAL引用?這是一個用VB.NET編寫的自定義類,所以它不實現IDisposable,所以我不確定是否有任何要做的事情,但我們確實有錯誤和問題(如GetOrdinal問題),這似乎是負載相關的,我想知道這是否是問題的一部分。