Beispiel #1
0
        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"));
        }