public static EntityClassDefinition CreateEntity(this DapperProject project, ITableFunction tableFunction)
        {
            var definition = new EntityClassDefinition
            {
                Namespaces =
                {
                    "System"
                },
                Namespace      = project.Database.HasDefaultSchema(tableFunction) ? project.GetEntityLayerNamespace() : project.GetEntityLayerNamespace(tableFunction.Schema),
                AccessModifier = AccessModifier.Public,
                Name           = tableFunction.GetResultName(),
                Constructors   =
                {
                    new ClassConstructorDefinition(AccessModifier.Public)
                }
            };

            if (!string.IsNullOrEmpty(tableFunction.Description))
            {
                definition.Documentation.Summary = tableFunction.Description;
            }

            var selection = project.GetSelection(tableFunction);

            foreach (var column in tableFunction.Columns)
            {
                definition.Properties.Add(new PropertyDefinition(AccessModifier.Public, project.Database.ResolveDatabaseType(column), project.GetPropertyName(column.Name))
                {
                    IsAutomatic = true
                });
            }

            definition.Implements.Add("IEntity");

            if (selection.Settings.SimplifyDataTypes)
            {
                definition.SimplifyDataTypes();
            }

            return(definition);
        }
 public static string GetResultName(this DapperProject project, ITableFunction tableFunction)
 => string.Format("{0}Result", project.CodeNamingConvention.GetClassName(tableFunction.Name));
 /// <summary>
 /// Gets a sequence of extended properties for table function
 /// </summary>
 /// <param name="connection">Instance of <see cref="DbConnection"/> class</param>
 /// <param name="tableFunction">Name for table function</param>
 /// <param name="name">Name for extended property</param>
 /// <returns>A sequence of <see cref="ExtendedProperty"/> class</returns>
 public static IEnumerable <ExtendedProperty> GetExtendedProperties(this DbConnection connection, ITableFunction tableFunction, string name)
 => new ExtendedPropertyRepository(connection).GetExtendedProperties(new ExtendedProperty(name, "schema", tableFunction.Schema, tableFunction.Type, tableFunction.Name)).ToList();
 public static string GetResultName(this ITableFunction tableFunction)
 => string.Format("{0}Result", CodeNamingConvention.GetClassName(tableFunction.Name));