public static Type GetClrType(this IEdmModel edmModel, IEdmTypeReference edmTypeReference, IAssemblyResolver assembliesResolver) { if (edmTypeReference == null) { throw new ArgumentNullException(nameof(edmTypeReference)); } if (edmTypeReference.Definition.IsEquivalentTo(_coreModel.GetUntypedType())) { return(typeof(object)); } Type primitiveClrType = _builtInTypesMapping .Where(kvp => edmTypeReference.Definition.IsEquivalentTo(kvp.Value) && (!edmTypeReference.IsNullable || IsNullable(kvp.Key))) .Select(kvp => kvp.Key) .FirstOrDefault(); if (primitiveClrType != null) { return(primitiveClrType); } else { Type clrType = edmModel.GetClrType(edmTypeReference.Definition, assembliesResolver); if (clrType != null && TypeHelper.IsEnum(clrType) && edmTypeReference.IsNullable) { return(TypeHelper.ToNullable(clrType)); } return(clrType); } }