private ICSharpExpression GetMappingTypeName(IType scalarType) { var columnTypeNameClass = provider.GetType($"SKBKontur.Billy.Core.Common.Quering.ColumnTypeNames"); var columnTypeNameClassType = columnTypeNameClass.GetTypeElement(); // ReSharper disable once InconsistentNaming ICSharpExpression createExpression(string x) => columnTypeNameClassType != null ? factory.CreateReferenceExpression("$0.$1", columnTypeNameClassType.ShortName, x) : factory.CreateExpression($"ColumnTypeNames.{x}"); if (scalarType.IsNullable()) { scalarType = scalarType.GetNullableUnderlyingType(); } if (scalarType.IsInt() || scalarType.IsEnumType()) { return(createExpression(Constants.Int)); } if (scalarType.IsGuid()) { return(createExpression(Constants.UniqueIdentifier)); } if (scalarType.IsString()) { return(createExpression(Constants.NVarChar)); } if (scalarType.IsBool()) { return(createExpression(Constants.Bit)); } if (scalarType.IsDateTime()) { return(createExpression(Constants.DateTime2)); } if (scalarType.IsLong()) { return(createExpression(Constants.BigInt)); } if (scalarType.IsDecimal()) { return(createExpression(Constants.Decimal)); } return(factory.CreateExpression("TODO")); }