Estoy analizando XML (LINQ a XML) y estoy usando un tipo de nulo (int?
y decimal?
) en los casos en que el elemento/atributo está vacío. Sin embargo, cuando construyo mi colección para pasarla al DB (usando TVP) no sé cómo manejar los casos donde el valor es realmente nulo. No puedo pasar un nulo en SqlDataRecord SetInt32 o SetDecimal y no quiero establecerlo en cero ... De hecho, quiero que sea nulo.¿Cómo maneja el tipo anulable con SqlDataRecord
Diciéndome que no hay sobrecarga para int
?
Conde a continuación es un tipo anulable (int?
Conde)
SqlDataRecord rec = new SqlDataRecord(
new SqlMetaData("Name", SqlDbType.VarChar, 50),
new SqlMetaData("Type", SqlDbType.VarChar, 50),
new SqlMetaData("Count", SqlDbType.Int));
rec.SetString(0, dm.Name);
rec.SetString(1, dm.Type);
rec.SetString(2, dm.Count);
Alguna idea de cómo manejar esto sin pasar a cero (manteniendo la hipótesis nula)?
+1, muy agradable ... –
SetValue (ordinal, object) maneja nulables y valores nulos con un poco de sobrecarga para tipo y verificación de la longitud del valor. La diferencia de rendimiento puede no ser notable. –
@RichardCollette Gracias por el comentario; No pensé en eso. Sospecho que tienes razón en que la diferencia de rendimiento probablemente sea insignificante para la mayoría de las aplicaciones. Tiendo a preferir una tipificación más fuerte por motivos filosóficos, sin embargo. Tu comentario también me inspira a agregar una pequeña optimización en la que no pensé hace dos años. – phoog