我正在将使用 ADO.NET/ODP.NET 的代码迁移到 Enterprise Library 6.0。我正在使用增加对 ODP.NET 支持的 EntLibContrib 项目。在 ADO.NET 代码中进行了一些优化,我正在尝试确定如何使用 EL 调用这些属性。
ADO.NET 看起来像这样:
using (OracleConnection conn = new OracleConnection(_connectionString))
{
using (OracleCommand cmd = new OracleCommand(command, conn))
{
cmd.CommandType = CommandType.Text;
cmd.InitialLOBFetchSize = -1;
cmd.Connection.Open();
OracleDataReader reader = cmd.ExecuteReader();
reader.FetchSize = reader.RowSize * 1000;
reader.Read();
[...]
}
}
EL 代码如下所示:
var database = new DatabaseProviderFactory().CreateDefault();
using (var reader = database.ExecuteReader(CommandType.Text, command))
{
[...]
}
我也在更新存储过程以及这里的例子。
ADO.NET:
using (OracleConnection conn = new OracleConnection(_connectionString))
{
using (OracleCommand cmd = new OracleCommand(command, conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("pID", OracleDbType.Int32).Value = eID;
OracleParameter pResults = cmd.Parameters.Add("pResults", OracleDbType.RefCursor, ParameterDirection.Output);
cmd.Connection.Open();
cmd.ExecuteNonQuery();
using (OracleRefCursor cursor = pResults.Value as OracleRefCursor)
{
using (OracleDataReader reader = cursor.GetDataReader())
{
reader.FetchSize = reader.RowSize * 1000;
while (reader.Read())
{
[...]
}
致 EL:
var database = new DatabaseProviderFactory().CreateDefault();
using (var reader = database.ExecuteReader("SS.SP_GET_TASKDATA_BY_PRAC", practiceID, firstRow, lastRow))
{
while (reader.Read())
{
[...]
}
如何使用我的 EL 代码设置 FetchSize 和 InitialLOBFetchSize 属性?