Eu tenho o seguinte código. Estou recebendo erro:
"A conversão para o tipo de valor 'Int32' falhou porque o valor materializado é nulo. O parâmetro genérico do tipo de resultado ou a consulta devem usar um tipo anulável."
quando a tabela CreditHistory não possui 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();
Como posso modificar a consulta para aceitar valores nulos?
Para permitir um
Amount
campo anulável , basta usar o operador de coalescência nula para converter nulos em 0.fonte
int?
primeiro.Amount
for umint
, já temos certeza de que não pode ser nulo e a coalescência é desnecessária. Se você está recebendo o erro que você disse, entãoAmount
não é anulável, é apenas umint
; nesse caso, talvez você precise alterar sua coluna linq2sql dbml no designer para permitir nulos.Você está usando a
aggregate
função que não obtém os itens para executar a ação, você deve verificar se a consulta linq está dando algum resultado, como abaixo:fonte
Recebi essa mensagem de erro quando estava tentando selecionar uma exibição.
O problema foi que a visualização ganhou recentemente algumas novas linhas nulas (na coluna SubscriberId) e não foi atualizada no EDMX (primeiro no banco de dados EF).
A coluna tinha que ser do tipo Anulável para funcionar.
var dealer = Context.Dealers.Where (x => x.dealerCode == dealerCode) .FirstOrDefault ();
Antes de visualizar a atualização:
Após a atualização da visualização:
Excluir e adicionar a visualização novamente no EDMX funcionou.
Espero que ajude alguém.
fonte
Eu usei esse código e ele responde corretamente, apenas o valor de saída é anulável.
fonte
Vejo que esta pergunta já foi respondida. Mas se você deseja que ele seja dividido em duas instruções, é possível considerar o seguinte.
fonte
Este erro ocorreu no Entity Framework 6 com este código em tempo de execução:
Atualização do LeandroSoares:
Use isto para execução única:
Original:
Mudou para isso e funcionou:
fonte
Eu também estava enfrentando o mesmo problema e resolvi fazendo a coluna anulável usando "?" operador.
Às vezes, nulo é retornado.
fonte