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
dataProviderIDataProviderThe data provider instance where the reader expression will be set.
includeDataReaderTypeboolFlag indicating whether to include the data reader type in the reader expression.
exprExpression<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
TDbDataReaderType of the database data reader, e.g. DbDataReader.
T
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
dataProviderIDataProviderThe data provider instance where the reader expression will be set.
exprExpression<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
TDbDataReaderType of the database data reader, e.g. DbDataReader.
T
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
dataProviderIDataProviderThe data provider instance where the reader expression will be set.
dataTypeNamestringThe name of the data type as returned by GetDataTypeName(int).
exprExpression<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
TDbDataReaderType of the database data reader, e.g. DbDataReader.
T
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
dataProviderIDataProviderThe data provider instance where the reader expression will be set.
fieldTypeTypeThe type of the field as returned by GetFieldType(int).
dataTypeNamestringThe name of the data type as returned by GetDataTypeName(int).
exprExpression<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
TDbDataReaderType of the database data reader, e.g. DbDataReader.
T
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
dataProviderIDataProviderThe data provider instance where the reader expression will be set.
dataReaderTypeTypeType of DbDataReader implementation. Could not match Type, implemented by ADO.NET provider if wrapper like MiniProfiler used without proper IUnwrapDataObjectInterceptor registration provided.
toTypeTypeExpected type (e.g. type of property in mapped entity class). For nullable value types doesn't include Nullable<T> wrapper.
providerFieldTypeTypeType, returned by GetProviderSpecificFieldType(int) for column.
fieldTypeTypeType, returned by GetFieldType(int) for column.
dataTypeNamestringType name, returned by GetDataTypeName(int) for column.
exprExpression<Func<TDbDataReader, int, T>>
Type Parameters
TDbDataReaderType of the database data reader, e.g. DbDataReader.
T