SQLDataReader上的转换错误

Phi*_*hil 5 .net enterprise-library sqldatareader daab

我的网站使用的是企业库v 5.0.主要是DAAB.一些函数,如executioncalar,executionataset正在按预期工作.当我开始使用读者时会出现问题

我的include类中有这个函数:

Public Function AssignedDepartmentDetail(ByVal Did As Integer) As SqlDataReader
    Dim reader As SqlDataReader
    Dim Command As SqlCommand = db.GetSqlStringCommand("select seomthing from somewhere where something = @did")
    db.AddInParameter(Command, "@did", Data.DbType.Int32, Did)
    reader = db.ExecuteReader(Command)
    reader.Read()
    Return reader
End Function
Run Code Online (Sandbox Code Playgroud)

这是从我的aspx.vb中调用的,如下所示:

reader = includes.AssignedDepartmentDetail(Did)
If reader.HasRows Then
    TheModule = reader("templatefilename")
    PageID = reader("id")
Else
    TheModule = "#"
End If
Run Code Online (Sandbox Code Playgroud)

这会在db.ExecuteReader行上出现以下错误:

无法将类型为"Microsoft.Practices.EnterpriseLibrary.Data.RefCountingDataReader"的对象强制转换为"System.Data.SqlClient.SqlDataReader".

任何人都可以了解我如何开展这项工作.通过entlib与读者打交道时,我是否会遇到问题?

小智 0

我想我有一个可行的解决方案。

enter code here

    ' Create the Database object, using the default database service. The
    ' default database service is determined through configuration.
    Dim db As Microsoft.Practices.EnterpriseLibrary.Data.Database = EnterpriseLibraryContainer.Current.GetInstance(Of Microsoft.Practices.EnterpriseLibrary.Data.Database)(DatabaseName)

    Dim dbCommand As DbCommand
    dbCommand = db.GetStoredProcCommand(StoredProcedureName)

    'create a new database connection based on the enterprise library database connection
    Dim dbConnection As System.Data.Common.DbConnection
    dbConnection = db.CreateConnection
    dbConnection.Open()

    'set the dbCommand equal to the open dbConnection
    dbCommand.Connection = dbConnection

    'return a ADO sqlDatareader but still managed by the EnterpriseLibrary
    Return dbCommand.ExecuteReader(CommandBehavior.CloseConnection)
Run Code Online (Sandbox Code Playgroud)