public static DbContextQueryExtensionsClassDefinition GetDbContextQueryExtensionsClassDefinition(this ProjectFeature <EntityFrameworkCoreProjectSettings> projectFeature)
        {
            var project = projectFeature.GetEntityFrameworkCoreProject();

            var definition = new DbContextQueryExtensionsClassDefinition
            {
                Namespaces =
                {
                    "System",
                    "System.Collections.Generic",
                    "System.Linq",
                    "System.Threading.Tasks",
                    "Microsoft.EntityFrameworkCore",
                    project.GetDomainModelsNamespace()
                },
                Namespace      = project.Name,
                AccessModifier = AccessModifier.Public,
                IsStatic       = true,
                Name           = projectFeature.GetQueryExtensionsClassName()
            };

            foreach (var table in projectFeature.GetTables())
            {
                var selection = projectFeature.GetEntityFrameworkCoreProject().GetSelection(table);

                if (!project.Database.HasDefaultSchema(table))
                {
                    definition.Namespaces.AddUnique(project.GetDomainModelsNamespace(table.Schema));
                }

                if (selection.Settings.EntitiesWithDataContracts)
                {
                    definition.Namespaces.AddUnique(project.GetDomainQueryModelsNamespace());
                }

                definition.AddGetAllMethod(projectFeature, selection, table);

                if (table.PrimaryKey != null)
                {
                    definition.Methods.Add(GetGetMethod(projectFeature, selection, table));
                }

                foreach (var unique in table.Uniques)
                {
                    definition.Methods.Add(GetGetByUniqueMethods(projectFeature, table, unique));
                }

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

            return(definition);
        }