Table of Contents

Class DataProviderExtensions

Namespace
LinqToDB.Internal.DataProvider
Assembly
linq2db.dll
public static class DataProviderExtensions
Inheritance
DataProviderExtensions
Inherited Members

Methods

SetFieldReaderExpression<TDbDataReader, T>(IDataProvider, bool, Expression<Func<TDbDataReader, int, T>>)

Sets the reader expression for a field of type T in the data provider.

var dataProvider = SqlServerTools.GetDataProvider(SqlServerVersion.v2019);

dataProvider.SetFieldReaderExpression<SqlDataReader,decimal>((r, i) => GetDecimal(r, i));

static decimal GetDecimal(SqlDataReader rd, int index)
{
    var value = rd.GetSqlDecimal(index);

    if (value.Precision > 29)
    {
        var str = value.ToString();
        var val = decimal.Parse(str);
        return val;
    }

    return value.Value;
}
public static void SetFieldReaderExpression<TDbDataReader, T>(this IDataProvider dataProvider, bool includeDataReaderType, Expression<Func<TDbDataReader, int, T>> expr) where TDbDataReader : DbDataReader

Parameters

dataProvider IDataProvider

The data provider instance where the reader expression will be set.

includeDataReaderType bool

Flag indicating whether to include the data reader type in the reader expression.

expr Expression<Func<TDbDataReader, int, T>>

The expression that defines how to read the field from the data reader. The expression should take two parameters: the data reader and the index of the field.

Type Parameters

TDbDataReader

Type of the database data reader, e.g. DbDataReader.

T

Type of the field to be read, e.g. decimal or string.

SetFieldReaderExpression<TDbDataReader, T>(IDataProvider, Expression<Func<TDbDataReader, int, T>>)

Sets the reader expression for a field of type T in the data provider.

var dataProvider = SqlServerTools.GetDataProvider(SqlServerVersion.v2019);

dataProvider.SetFieldReaderExpression<SqlDataReader,decimal>((r, i) => GetDecimal(r, i));

static decimal GetDecimal(SqlDataReader rd, int index)
{
    var value = rd.GetSqlDecimal(index);

    if (value.Precision > 29)
    {
        var str = value.ToString();
        var val = decimal.Parse(str);
        return val;
    }

    return value.Value;
}
public static void SetFieldReaderExpression<TDbDataReader, T>(this IDataProvider dataProvider, Expression<Func<TDbDataReader, int, T>> expr) where TDbDataReader : DbDataReader

Parameters

dataProvider IDataProvider

The data provider instance where the reader expression will be set.

expr Expression<Func<TDbDataReader, int, T>>

The expression that defines how to read the field from the data reader. The expression should take two parameters: the data reader and the index of the field.

Type Parameters

TDbDataReader

Type of the database data reader, e.g. DbDataReader.

T

Type of the field to be read, e.g. decimal or string.

SetFieldReaderExpression<TDbDataReader, T>(IDataProvider, string, Expression<Func<TDbDataReader, int, T>>)

Sets the reader expression for a field of type T in the data provider.

var dataProvider = SqlServerTools.GetDataProvider(SqlServerVersion.v2019);

dataProvider.SetFieldReaderExpression<DbDataReader,DateTime>("time", (r, i) => GetDateTimeAsTime(r.GetDateTime(i)));

static DateTime GetDateTimeAsTime(DateTime value)
{
    if (value is { Year: 1900, Month: 1, Day: 1 })
        return new DateTime(1, 1, 1, value.Hour, value.Minute, value.Second, value.Millisecond);
    return value;
}
public static void SetFieldReaderExpression<TDbDataReader, T>(this IDataProvider dataProvider, string dataTypeName, Expression<Func<TDbDataReader, int, T>> expr) where TDbDataReader : DbDataReader

Parameters

dataProvider IDataProvider

The data provider instance where the reader expression will be set.

dataTypeName string

The name of the data type as returned by GetDataTypeName(int).

expr Expression<Func<TDbDataReader, int, T>>

The expression that defines how to read the field from the data reader. The expression should take two parameters: the data reader and the index of the field.

Type Parameters

TDbDataReader

Type of the database data reader, e.g. DbDataReader.

T

Type of the field to be read, e.g. decimal or string.

SetFieldReaderExpression<TDbDataReader, T>(IDataProvider, Type, string, Expression<Func<TDbDataReader, int, T>>)

Sets the reader expression for a field of type T in the data provider.

var dataProvider = SqlServerTools.GetDataProvider(SqlServerVersion.v2019);

dataProvider.SetFieldReaderExpression<DbDataReader,string>(typeof(byte[]), "vector", (r, i) => r.GetString(i));
public static void SetFieldReaderExpression<TDbDataReader, T>(this IDataProvider dataProvider, Type fieldType, string dataTypeName, Expression<Func<TDbDataReader, int, T>> expr) where TDbDataReader : DbDataReader

Parameters

dataProvider IDataProvider

The data provider instance where the reader expression will be set.

fieldType Type

The type of the field as returned by GetFieldType(int).

dataTypeName string

The name of the data type as returned by GetDataTypeName(int).

expr Expression<Func<TDbDataReader, int, T>>

The expression that defines how to read the field from the data reader. The expression should take two parameters: the data reader and the index of the field.

Type Parameters

TDbDataReader

Type of the database data reader, e.g. DbDataReader.

T

Type of the field to be read, e.g. decimal or string.

SetFieldReaderExpression<TDbDataReader, T>(IDataProvider, Type?, Type?, Type?, Type?, string?, Expression<Func<TDbDataReader, int, T>>)

Sets the reader expression for a field in the data provider.

public static void SetFieldReaderExpression<TDbDataReader, T>(this IDataProvider dataProvider, Type? dataReaderType, Type? toType, Type? providerFieldType, Type? fieldType, string? dataTypeName, Expression<Func<TDbDataReader, int, T>> expr) where TDbDataReader : DbDataReader

Parameters

dataProvider IDataProvider

The data provider instance where the reader expression will be set.

dataReaderType Type

Type of DbDataReader implementation. Could not match Type, implemented by ADO.NET provider if wrapper like MiniProfiler used without proper IUnwrapDataObjectInterceptor registration provided.

toType Type

Expected type (e.g. type of property in mapped entity class). For nullable value types doesn't include Nullable<T> wrapper.

providerFieldType Type

Type, returned by GetProviderSpecificFieldType(int) for column.

fieldType Type

Type, returned by GetFieldType(int) for column.

dataTypeName string

Type name, returned by GetDataTypeName(int) for column.

expr Expression<Func<TDbDataReader, int, T>>

Type Parameters

TDbDataReader

Type of the database data reader, e.g. DbDataReader.

T

Type of the field to be read, e.g. decimal or string.