Added reader extensions.

This commit is contained in:
2024-10-22 14:21:30 +02:00
parent 8ed62a378f
commit 4c7c6e4efd
2 changed files with 246 additions and 1 deletions

View File

@@ -11485,6 +11485,126 @@ namespace DynamORM
void Dispose(bool disposing);
}
public static class ReaderExtensions
{
public static bool? GetBooleanIfNotNull(this IDataReader r, string name, bool? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetBoolean(ord);
}
public static byte? GetByteIfNotNull(this IDataReader r, string name, byte? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetByte(ord);
}
public static char? GetCharIfNotNull(this IDataReader r, string name, char? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetChar(ord);
}
public static DateTime? GetDateTimeIfNotNull(this IDataReader r, string name, DateTime? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetDateTime(ord);
}
public static decimal? GetDecimalIfNotNull(this IDataReader r, string name, decimal? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetDecimal(ord);
}
public static double? GetDoubleIfNotNull(this IDataReader r, string name, double? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetDouble(ord);
}
public static float? GetFloatIfNotNull(this IDataReader r, string name, float? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetFloat(ord);
}
public static Guid? GetGuidIfNotNull(this IDataReader r, string name, Guid? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetGuid(ord);
}
public static short? GetInt16IfNotNull(this IDataReader r, string name, short? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetInt16(ord);
}
public static int? GetInt32IfNotNull(this IDataReader r, string name, int? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetInt32(ord);
}
public static long? GetInt64IfNotNull(this IDataReader r, string name, long? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetInt64(ord);
}
public static string GetStringIfNotNull(this IDataReader r, string name, string def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetString(ord);
}
public static object GetValueIfNotNull(this IDataReader r, string name, object def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetValue(ord);
}
}
/// <summary>Class containing useful string extensions.</summary>
internal static class StringExtensions
{
@@ -13968,7 +14088,7 @@ namespace DynamORM
throw new InvalidOperationException("Enumerables of enumerables are not supported");
Column = attr;
if (attr != null && attr.AllowNull && !Type.IsNullableType() && Type != typeof(string))
attr.AllowNull = false;

View File

@@ -0,0 +1,125 @@
using System;
using System.Data;
namespace DynamORM.Helpers
{
public static class ReaderExtensions
{
public static bool? GetBooleanIfNotNull(this IDataReader r, string name, bool? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetBoolean(ord);
}
public static byte? GetByteIfNotNull(this IDataReader r, string name, byte? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetByte(ord);
}
public static char? GetCharIfNotNull(this IDataReader r, string name, char? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetChar(ord);
}
public static DateTime? GetDateTimeIfNotNull(this IDataReader r, string name, DateTime? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetDateTime(ord);
}
public static decimal? GetDecimalIfNotNull(this IDataReader r, string name, decimal? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetDecimal(ord);
}
public static double? GetDoubleIfNotNull(this IDataReader r, string name, double? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetDouble(ord);
}
public static float? GetFloatIfNotNull(this IDataReader r, string name, float? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetFloat(ord);
}
public static Guid? GetGuidIfNotNull(this IDataReader r, string name, Guid? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetGuid(ord);
}
public static short? GetInt16IfNotNull(this IDataReader r, string name, short? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetInt16(ord);
}
public static int? GetInt32IfNotNull(this IDataReader r, string name, int? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetInt32(ord);
}
public static long? GetInt64IfNotNull(this IDataReader r, string name, long? def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetInt64(ord);
}
public static string GetStringIfNotNull(this IDataReader r, string name, string def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetString(ord);
}
public static object GetValueIfNotNull(this IDataReader r, string name, object def = null)
{
var ord = r.GetOrdinal(name);
if (r.IsDBNull(ord))
return def;
return r.GetValue(ord);
}
}
}