我正在从SQL表中读取一个位值,并将其转换为布尔值以映射到布尔模型值。如何解决位值上的IndexOutOfRangeException?
但是,当我读回IsPDLChecked
位字段并初始化为false时,我得到一个index out of range exception
。
我抬头异常的定义,我不知道为什么值超出范围,由于它是初始化用假值,即0
。所以这不是一个负范围值。
问:
为什么我会得到一个IndexOutOfRange exception
虽然位值被读回被转换为bool和init假?
代码:
模型 -
public partial class EmailContact
{
public int ContactID { get; set; }
public bool IsPDLChecked { get; set; }
public string ContactDisplayName { get; set; }
public string ContactEmailAddress { get; set; }
}
数据读取器片段 -
while (dataReader.Read())
{
statusList.Add(new EmailContact(dataReader["IsPDLChecked"] as bool? ?? false,dataReader["ContactDisplayName"].ToString(), dataReader["ContactEmailAddress"].ToString()));
}
错误细节:
System.IndexOutOfRangeException被抓住
的HResult = -2146233080
消息= IsPDLChecked
源= System.Data
堆栈跟踪:在System.Data.ProviderBase.FieldNameLookup.GetOrdinal(字符串fieldName的)
在系统.Data.SqlClient.SqlDataReader.GetOrdinal(字符串名称)
在System.Data.SqlClient.SqlDataReader.get_Item(字符串名称)
DB模式:(我也注意到了 “CHARACTER_MAX_LENGTH” 列设置为null在此):
DB值:(IsPDLChecked有一个值)