【发布时间】:2016-09-05 04:04:01
【问题描述】:
我正在从 SQL 表中读回一个位值,并将其转换为布尔值以映射到布尔模型值。
但是当我读回 IsPDLChecked 位字段并初始化为 false 时,我得到一个 index out of range exception。
我查看了异常的定义,但我不确定为什么该值超出范围,因为它是 带有错误值的初始化,即0。所以它不是负范围值。
问题:
为什么我得到一个IndexOutOfRange exception 虽然被读回的位值被强制转换为 bool 并且 init 为 false?
代码:
型号 -
public partial class EmailContact
{
public int ContactID { get; set; }
public bool IsPDLChecked { get; set; }
public string ContactDisplayName { get; set; }
public string ContactEmailAddress { get; set; }
}
数据读取器 sn-p -
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(String fieldName)
在 System.Data.SqlClient.SqlDataReader.GetOrdinal(字符串名称)
在 System.Data.SqlClient.SqlDataReader.get_Item(字符串名称)
数据库架构:(我确实注意到“CHARACTER_MAX_LENGTH”列设置为空):
DB 值:(IsPDLChecked 有值)
【问题讨论】:
标签: boolean bit sqldatareader indexoutofrangeexception