.net - tag - metaetiqueta wordpress
¿Cómo puedo verificar DBNull mientras ejecuto mi comando solo una vez? (3)
Escriba usted mismo un método de extensión para el comando sql.
public static T ExecuteNullableScalar<T>(this SqlCommand cmd)
where T : struct
{
var result = cmd.ExecuteScalar();
if (result == DBNull.Value) return default(T);
return (T)result;
}
El uso se convierte en:
int value = cmd.ExecuteNullableScalar<int>();
Cuando recupero cualquier valor escalar de la base de datos, generalmente escribo código como este para campos con nulos.
cmd.ExecuteScalar() == DBNull.Value ? 0 : (int)cmd.ExecuteScalar()
Pero no me gusta porque ejecuta la declaración Executescalar dos veces. Es un viaje extra al servidor para mi sitio web y a favor del rendimiento. No quiero hacer esto.
¿Hay alguna manera de que pueda deshacerme de este ExecuteScalar extra ()?
Solo usa una variable para almacenar en caché el resultado:
var o = cmd.ExecuteScalar();
return o == DBNull.Value ? 0 : (int)o;
object o = cmd.ExecuteScalar();
return (o== DBNull.Value) ? 0 : (int)o;