У меня есть следующий код insdie моих ASP.NET MVC веб-приложения: -Недопустимое значение для значения типа Int32, поскольку материализованное значение равно null.
SystemInformation s = new SystemInformation()
{
AssetCount = new AssetCount() {
CustomerCount = entities.AccountDefinitions == null ? 0 : entities.AccountDefinitions.Count(),
RackCount = tms.TMSRacks == null ? 0 : tms.TMSRacks.Count(),
ServerCount = tms.TMSServers == null ? 0 : tms.TMSServers.Count(),
CustomCount = tms.CustomAssets==null? 0 : tms.CustomAssets.Sum(a => a.Quantity)
},
Но в настоящее время, если какие-либо из Enumerable пустует я получу следующее сообщение об ошибке: -
The cast to value type 'Int32' failed because the materialized value is null. Either the result type's generic parameter or the query must use a nullable type.
Это потому, что int32 является примитивным типом, а не объектом и, следовательно, не может быть недействительным. Попробуйте, что предложено в этой статье [http://stackoverflow.com/questions/2152717/what-is-the-integer-reference-type-in-c). TL; DR: при объявлении RackCount (например) с использованием синтаксиса 'int32? RackCount; 'или' Nullable RackCount; ' –
Sidewinder94
@ Sidewinder94 Зачем ему это нужно? Если 'tms.TMSRacks' имеет значение NULL, он сохраняет 0. –
. Вы не должны иметь ни одну из этих коллекций в нулевом значении. Там не должно быть необходимости в этих проверках. Имейте в виду, что * null * и * empty * - две разные вещи для коллекции. – Servy