public CodeGenerationModel AddProperty(string name, ModelPropertyLogicalType propertyType, bool isRequired = false)
        {
            _currentProperty = new ModelProperty
            {
                Entity       = _currentEntity,
                Name         = name,
                PropertyType = new ModelPropertyType
                {
                    LogicalType    = propertyType,
                    ObjectTypeName = null,
                    ListItemType   = null,
                },
                IsRequired = isRequired
            };

            _currentEntity.Properties.Add(_currentProperty);

            return(this);
        }
        public static string ToCSharpTypeName(this ModelPropertyLogicalType modelPropertyLogicalType)
        {
            switch (modelPropertyLogicalType)
            {
            case ModelPropertyLogicalType.Boolean:
                return("bool");

            case ModelPropertyLogicalType.Byte:
                return("byte");

            case ModelPropertyLogicalType.Date:
            case ModelPropertyLogicalType.DateAndTime:
                return("DateTime");

            case ModelPropertyLogicalType.Character:
                return("char");

            case ModelPropertyLogicalType.Decimal:
                return("decimal");

            case ModelPropertyLogicalType.Integer:
                return("int");

            case ModelPropertyLogicalType.List:
                return("IList<T>");

            case ModelPropertyLogicalType.KeyValuePair:
                return("IKeyValuePair<TKey, TValue>");

            case ModelPropertyLogicalType.String:
                return("string");

            case ModelPropertyLogicalType.Time:
                return("TimeSpan");

            case ModelPropertyLogicalType.Object:
            case ModelPropertyLogicalType.Unknown:
            default:
                return("object");
            }
        }