У меня есть таблица на сервере SQL с некоторым столбцом (tinyint) со значением Null, например:

Соответствующий объект DataObject в C # сОбнуляемые значения (карта BurstHierarchyTypeId на карте tbh_id и карта BurstPlateformTypeId на таблице tbp_id):
public class BurstShortCutDo : BaseDomain
{
private long _adfId = ValueTypeUtils.Instance.LongNull;
private string _websitesIds;
private string _shortCutValue = "";
private int? _burstHierarchyTypeId = null;
private int? _burstPlateformTypeId = null;
#region CONSTRUCTORS
public BurstShortCutDo()
{
}
#endregion
#region PROPERTIES
public long AdfId
{
get { return _adfId; }
set { _adfId = value; }
}
public int? BurstHierarchyTypeId
{
get { return _burstHierarchyTypeId; }
set { _burstHierarchyTypeId = value; }
}
public int? BurstPlateformTypeId
{
get { return _burstPlateformTypeId; }
set { _burstPlateformTypeId = value; }
}
public string ShortCutValue
{
get { return _shortCutValue; }
set { _shortCutValue = value; }
}
}
У меня есть запрос, который получает линии моей таблицы в соответствии с ComId.
Когда я выполняю запросЯ получаю сообщение об ошибке:
Invalid cast from 'System.Byte' to 'System.Nullable`1
вот установщик (из PropertyUtils.cs):
private void SetPropertySimpleName(object obj, string propName, object propValue)
{
PropertyInfo propInfo = obj.GetType().GetProperty(propName);
if (propInfo != null && propInfo.CanWrite)
{
if (propValue == null && !propInfo.PropertyType.IsValueType)
{
propInfo.SetValue(obj, null, null);
}
else if (propInfo.PropertyType.IsAssignableFrom(propValue.GetType()))
{
propInfo.SetValue(obj, propValue, null);
}
else if (propValue is IConvertible)
{
// CRASH HERE
propInfo.SetValue(obj, Convert.ChangeType(propValue, propInfo.PropertyType, CultureInfo.CurrentCulture), null);
}
}
else
{
throw new ObjectNotFoundException("The property '" + propName + "' is not found in class '" + obj.GetType().FullName + "'");
}
}
Сообщение об ошибке при попытке установить значение BurstPlateformTypeId (tbp_id = 1):
Invalid cast from 'System.Byte' to 'System.Nullable`1
Convert.ChangeTpe взят из метаданных C #. Я понял, что значение, полученное запросом, равно «1», поэтому он обнаруживает целое число, но когда проверяет тип свойства изобъект получает значение NULL.
Почему мое значение свойства (1) считается байтом, а не целым числом?Как я могу отобразить NUll в соответствующее свойство (BurstPlateformTypeId) Null?