tengo el siguiente código. Recibo un error:
"El tipo de conversión al valor 'Int32' falló porque el valor materializado es nulo. El parámetro genérico del tipo de resultado o la consulta deben usar un tipo anulable".
cuando la tabla CreditHistory no tiene registros.
var creditsSum = (from u in context.User
join ch in context.CreditHistory on u.ID equals ch.UserID
where u.ID == userID
select ch.Amount).Sum();
¿Cómo puedo modificar la consulta para aceptar valores nulos?
Para permitir un
Amount
campo anulable , solo use el operador de fusión nula para convertir los valores nulos a 0.fuente
int?
primero.Amount
es unint
, entonces ya estamos seguros de que no puede ser nulo, y la fusión es innecesaria. Si está recibiendo el error que dijo, entoncesAmount
no es anulable, es solo un casoint
, en cuyo caso tal vez necesite cambiar su columna linq2sql dbml en el diseñador para permitir valores nulos.Está utilizando una
aggregate
función que no consigue que los elementos realicen una acción, debe verificar que la consulta linq esté dando algunos resultados de la siguiente manera:fuente
Tenía este mensaje de error cuando intentaba seleccionar desde una vista.
El problema era que la vista recientemente había ganado algunas filas nulas nuevas (en la columna SubscriberId), y no se había actualizado en EDMX (primero la base de datos EF).
La columna tenía que ser de tipo Nullable para que funcionara.
var dealer = Context.Dealers.Where (x => x.dealerCode == dealerCode) .FirstOrDefault ();
Antes de ver la actualización:
Después de actualizar la vista:
Eliminar y agregar la vista de nuevo en EDMX funcionó.
Espero que ayude a alguien.
fuente
He usado este código y responde correctamente, solo el valor de salida es anulable.
fuente
Veo que esta pregunta ya está respondida. Pero si desea que se divida en dos declaraciones, puede considerarse lo siguiente.
fuente
Tengo este error en Entity Framework 6 con este código en tiempo de ejecución:
Actualización de LeandroSoares:
Use esto para ejecución única:
Original:
Cambió a esto y luego funcionó:
fuente
También estaba enfrentando el mismo problema y lo resolví haciendo que la columna se anulara usando "?" operador.
A veces se devuelve nulo.
fuente