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); }