Ich lese ein Bit-Wert aus einer SQL-Tabelle zurück und Casting als ein boolescher Wert, um einen booleschen Modellwert zuzuordnen.Wie löst man eine IndexOutOfRangeException auf Bit-Wert auf?
Aber wenn ich das IsPDLChecked
Bit-Feld zurückgelesen und als falsch initialisiert habe, bekomme ich eine index out of range exception
.
sah ich die Definition von Ausnahme und ich bin mir nicht sicher, warum der Wert außerhalb des Bereichs liegt aufgrund seiner init mit einem falschen Wert, dh 0
zu sein. Es ist also kein negativer Bereichswert.
Frage:
Warum erhalte ich einen IndexOutOfRange exception
obwohl der Wert Bit wird zurückgelesen wird gegossen in bool und init auf false?
Code:
Modell -
public partial class EmailContact
{
public int ContactID { get; set; }
public bool IsPDLChecked { get; set; }
public string ContactDisplayName { get; set; }
public string ContactEmailAddress { get; set; }
}
Datenleser Schnipsel -
while (dataReader.Read())
{
statusList.Add(new EmailContact(dataReader["IsPDLChecked"] as bool? ?? false,dataReader["ContactDisplayName"].ToString(), dataReader["ContactEmailAddress"].ToString()));
}
Fehler Detail:
System.IndexOutOfRangeException wurde
gefangen HResult = -2146233080
Message = IsPDLChecked
Source = System.Data
Stacktrace:bei System.Data.ProviderBase.FieldNameLookup.GetOrdinal (String fieldname)
bei System .Data.SqlClient.SqlDataReader.GetOrdinal (String name)
bei System.Data.SqlClient.SqlDataReader.get_Item (String name)
DB Schema: (habe ich die "CHARACTER_MAX_LENGTH" -Spalte bemerken wird auf NULL auf diese eingestellt):
DB Werte: (IsPDLChecked einen Wert hat)