Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Jan 4, 2026

Plan to Fix Template Config File Issues ✅ COMPLETED

Based on the issue from ErikEJ, the template config file needs the following fixes:

  • Add $schema reference to enable editor support
  • Remove use-schema-folders-preview and use-schema-namespaces-preview (experimental/unsupported features)
  • Remove the invalid table-selection section (not in schema)
  • Remove use-date-only-time-only from code-generation (not in schema)
  • Remove settings with default values to keep config minimal
  • Change entity-namespace field name to model-namespace (per schema)
  • Ensure consistency with official EFCorePowerTools sample config
  • Update other sample configs for consistency
  • Validate all JSON files are syntactically correct
  • Run code review (no issues found)
  • Run security check (no vulnerabilities)
  • Fix failing test - add namespace fields for project name substitution

Summary of Changes

All changes successfully address ErikEJ's concerns:

  1. Schema missing - Added to template and all relevant samples
  2. Two sets of defaults - Removed all default values except required namespace fields
  3. Preview features - Removed experimental features except in schema-organization sample
  4. Invalid table-selection - Removed (use tables array instead per schema)
  5. Multiple schemas support - Default behavior now includes all tables/schemas
  6. Tests updated - Template includes namespace fields for proper project name substitution

Test Results: All 22 template tests passing ✓

Original prompt

This section details on the original issue you should resolve

<issue_title>Issues with config file included with template</issue_title>
<issue_description>

{
  "names": {
    "root-namespace": "Project1",
    "dbcontext-name": "ApplicationDbContext",
    "dbcontext-namespace": "Project1.Data",
    "entity-namespace": "Project1.Data.Entities"
  },
  "code-generation": {
    "use-nullable-reference-types": true,
    "use-date-only-time-only": true,
    "enable-on-configuring": false,
    "use-t4": false
  },
  "file-layout": {
    "output-path": "Models",
    "output-dbcontext-path": ".",
    "use-schema-folders-preview": true,
    "use-schema-namespaces-preview": true
  },
  "table-selection": [
    {
      "schema": "dbo",
      "include": true
    }
  ]
}
  1. Schema missing, so no help in the editor:
    "$schema": "https://raw.githubusercontent.com/ErikEJ/EFCorePowerTools/master/samples/efcpt-config.schema.json",

Would generally prefer the same defaults as the CLI, as having two sets of defaults is confusing for consumers and support staff (me!)

And if the default values has been set, maybe just remove the setting (adding the schema will help users discover them)

 "use-schema-folders-preview": true,
    "use-schema-namespaces-preview": true

Please set to false, and remove from the file, these setting can easily break the generated code, and are therefore "preview" (experimental) - and unsupported to some extent.

And also, why does the file layout matter for generated code?

 "table-selection": [
    {
      "schema": "dbo",
      "include": true
    }

There is no section called "table-selection" !

And what if there are more schemas??

Default behaviour is just to include and persist all tables, I believe.

</issue_description>

<agent_instructions>Review the sample file https://github.com/ErikEJ/EFCorePowerTools/blob/master/samples/efcpt-config.json and schema https://github.com/ErikEJ/EFCorePowerTools/blob/master/samples/efcpt-config.schema.json and ensure we're consistent with implementation. Update to resolve ErikEJ's concerns.</agent_instructions>

Comments on the Issue (you are @copilot in this section)


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix issues with config file included with template Fix template config file: remove invalid sections and experimental features Jan 4, 2026
Copilot AI requested a review from JerrettDavis January 4, 2026 22:43
@JerrettDavis JerrettDavis marked this pull request as ready for review January 4, 2026 22:52
@JerrettDavis
Copy link
Owner

@copilot ensure relevant tests are updated.

Run dotnet test JD.Efcpt.Build.sln \
Test run for /home/runner/work/JD.Efcpt.Build/JD.Efcpt.Build/tests/JD.Efcpt.Build.Tests/bin/Release/net10.0/JD.Efcpt.Build.Tests.dll (.NETCoreApp,Version=v10.0)
Test run for /home/runner/work/JD.Efcpt.Build/JD.Efcpt.Build/tests/JD.Efcpt.Sdk.IntegrationTests/bin/Release/net10.0/JD.Efcpt.Sdk.IntegrationTests.dll (.NETCoreApp,Version=v10.0)
VSTest version 18.0.1 (x64)
VSTest version 18.0.1 (x64)


Starting test execution, please wait...Starting test execution, please wait...

A total of 1 test files matched the specified pattern.
A total of 1 test files matched the specified pattern.
Data collection : Unable to find a datacollector with friendly name 'XPlat Code Coverage'.
Data collection : Could not find data collector 'XPlat Code Coverage'
[xUnit.net 00:00:58.57]     JD.Efcpt.Build.Tests.Integration.SnowflakeSchemaIntegrationTests.Reads_columns_with_metadata [SKIP]
[xUnit.net 00:00:58.58]     JD.Efcpt.Build.Tests.Integration.SnowflakeSchemaIntegrationTests.Computes_deterministic_fingerprint [SKIP]
[xUnit.net 00:00:58.58]     JD.Efcpt.Build.Tests.Integration.SnowflakeSchemaIntegrationTests.Reads_tables_from_database [SKIP]
[xUnit.net 00:00:58.58]     JD.Efcpt.Build.Tests.Integration.SnowflakeSchemaIntegrationTests.Fingerprint_changes_when_schema_changes [SKIP]
[xUnit.net 00:00:58.58]     JD.Efcpt.Build.Tests.Integration.SnowflakeSchemaIntegrationTests.Excludes_information_schema [SKIP]
[xUnit.net 00:00:58.58]     JD.Efcpt.Build.Tests.Integration.SnowflakeSchemaIntegrationTests.Factory_creates_correct_reader [SKIP]
[xUnit.net 00:00:58.58]     JD.Efcpt.Build.Tests.Integration.SnowflakeSchemaIntegrationTests.Sf_alias_works [SKIP]
  Skipped JD.Efcpt.Build.Tests.Integration.SnowflakeSchemaIntegrationTests.Reads_columns_with_metadata [1 ms]
  Skipped JD.Efcpt.Build.Tests.Integration.SnowflakeSchemaIntegrationTests.Computes_deterministic_fingerprint [1 ms]
  Skipped JD.Efcpt.Build.Tests.Integration.SnowflakeSchemaIntegrationTests.Reads_tables_from_database [1 ms]
  Skipped JD.Efcpt.Build.Tests.Integration.SnowflakeSchemaIntegrationTests.Fingerprint_changes_when_schema_changes [1 ms]
  Skipped JD.Efcpt.Build.Tests.Integration.SnowflakeSchemaIntegrationTests.Excludes_information_schema [1 ms]
  Skipped JD.Efcpt.Build.Tests.Integration.SnowflakeSchemaIntegrationTests.Factory_creates_correct_reader [1 ms]
  Skipped JD.Efcpt.Build.Tests.Integration.SnowflakeSchemaIntegrationTests.Sf_alias_works [1 ms]
[xUnit.net 00:05:41.80]     JD.Efcpt.Sdk.IntegrationTests.FrameworkMsBuildTests.FrameworkMsBuild_SelectsNet472TaskFolder [SKIP]
[xUnit.net 00:05:41.80]     JD.Efcpt.Sdk.IntegrationTests.FrameworkMsBuildTests.FrameworkMsBuild_Sdk_GeneratesEntityModels [SKIP]
[xUnit.net 00:05:41.80]     JD.Efcpt.Sdk.IntegrationTests.FrameworkMsBuildTests.FrameworkMsBuild_IncrementalBuild_SkipsRegenerationWhenUnchanged [SKIP]
[xUnit.net 00:05:41.80]     JD.Efcpt.Sdk.IntegrationTests.FrameworkMsBuildTests.FrameworkMsBuild_BuildPackage_GeneratesDbContext [SKIP]
[xUnit.net 00:05:41.80]     JD.Efcpt.Sdk.IntegrationTests.FrameworkMsBuildTests.FrameworkMsBuild_BuildPackage_GeneratesEntityModels [SKIP]
  Skipped JD.Efcpt.Sdk.IntegrationTests.FrameworkMsBuildTests.FrameworkMsBuild_SelectsNet472TaskFolder [1 ms]
  Skipped JD.Efcpt.Sdk.IntegrationTests.FrameworkMsBuildTests.FrameworkMsBuild_Sdk_GeneratesEntityModels [1 ms]
  Skipped JD.Efcpt.Sdk.IntegrationTests.FrameworkMsBuildTests.FrameworkMsBuild_IncrementalBuild_SkipsRegenerationWhenUnchanged [1 ms]
  Skipped JD.Efcpt.Sdk.IntegrationTests.FrameworkMsBuildTests.FrameworkMsBuild_BuildPackage_GeneratesDbContext [1 ms]
  Skipped JD.Efcpt.Sdk.IntegrationTests.FrameworkMsBuildTests.FrameworkMsBuild_BuildPackage_GeneratesEntityModels [1 ms]
[xUnit.net 00:06:29.01]     JD.Efcpt.Sdk.IntegrationTests.TemplateTests.Template_ConfigFileContainsCorrectProjectName [FAIL]
  Failed JD.Efcpt.Sdk.IntegrationTests.TemplateTests.Template_ConfigFileContainsCorrectProjectName [853 ms]
  Error Message:
   Expected string "{
  "$schema": "https://raw.githubusercontent.com/ErikEJ/EFCorePowerTools/master/samples/efcpt-config.schema.json",
  "names": {
    "root-namespace": "MyCustomProject",
    "dbcontext-name": "ApplicationDbContext"
  }
}
" to contain ""MyCustomProject.Data"" because Config should use project name in namespace references.
  Stack Trace:
     at FluentAssertions.Execution.LateBoundTestFramework.Throw(String message)
   at FluentAssertions.Execution.DefaultAssertionStrategy.HandleFailure(String message)
   at FluentAssertions.Execution.AssertionChain.FailWith(Func`1 getFailureReason)
   at FluentAssertions.Primitives.StringAssertions`1.Contain(String expected, String because, Object[] becauseArgs)
   at JD.Efcpt.Sdk.IntegrationTests.TemplateTests.Template_ConfigFileContainsCorrectProjectName() in /_/tests/JD.Efcpt.Sdk.IntegrationTests/TemplateTests.cs:line 102
--- End of stack trace from previous location ---

Failed!  - Failed:     1, Passed:    72, Skipped:     5, Total:    78, Duration: 6 m 55 s - JD.Efcpt.Sdk.IntegrationTests.dll (net10.0)

Passed!  - Failed:     0, Passed:   756, Skipped:     7, Total:   763, Duration: 12 m 19 s - JD.Efcpt.Build.Tests.dll (net10.0)

Attachments:
  /home/runner/work/JD.Efcpt.Build/JD.Efcpt.Build/tests/JD.Efcpt.Build.Tests/TestResults/910a5d87-7eef-4b10-b5d6-431c7be50234/coverage.cobertura.xml
Error: Process completed with exit code 1.

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Jan 4, 2026

@copilot ensure relevant tests are updated.

...

Fixed in commit d5ec53b. Added namespace fields (dbcontext-namespace and model-namespace) back to the template so project name substitution works correctly. The template now includes the required fields for tests while still removing the invalid/experimental sections per ErikEJ's feedback. All 22 template tests now passing.

@github-actions
Copy link
Contributor

github-actions bot commented Jan 5, 2026

Code Coverage

Summary
  Generated on: 01/05/2026 - 00:34:17
  Coverage date: 01/05/2026 - 00:34:14
  Parser: Cobertura
  Assemblies: 1
  Classes: 80
  Files: 51
  Line coverage: 84%
  Covered lines: 3975
  Uncovered lines: 752
  Coverable lines: 4727
  Total lines: 8541
  Branch coverage: 67.8% (1629 of 2400)
  Covered branches: 1629
  Total branches: 2400
  Method coverage: 94.7% (701 of 740)
  Full method coverage: 82% (607 of 740)
  Covered methods: 701
  Fully covered methods: 607
  Total methods: 740

JD.Efcpt.Build.Tasks                                                                                                                                               84%
  JD.Efcpt.Build.Tasks.AddSqlFileWarnings                                                                                                                        92.7%
  JD.Efcpt.Build.Tasks.ApplyConfigOverrides                                                                                                                       100%
  JD.Efcpt.Build.Tasks.BuildLog                                                                                                                                  66.6%
  JD.Efcpt.Build.Tasks.Chains.ConnectionStringResolutionChain                                                                                                    90.1%
  JD.Efcpt.Build.Tasks.Chains.ConnectionStringResolutionContext                                                                                                   100%
  JD.Efcpt.Build.Tasks.Chains.DirectoryResolutionChain                                                                                                           91.6%
  JD.Efcpt.Build.Tasks.Chains.DirectoryResolutionContext                                                                                                          100%
  JD.Efcpt.Build.Tasks.Chains.FileResolutionChain                                                                                                                 100%
  JD.Efcpt.Build.Tasks.Chains.FileResolutionContext                                                                                                               100%
  JD.Efcpt.Build.Tasks.Chains.ResourceResolutionChain                                                                                                            93.1%
  JD.Efcpt.Build.Tasks.Chains.ResourceResolutionContext                                                                                                           100%
  JD.Efcpt.Build.Tasks.CheckSdkVersion                                                                                                                           41.1%
  JD.Efcpt.Build.Tasks.ComputeFingerprint                                                                                                                        97.8%
  JD.Efcpt.Build.Tasks.Config.CodeGenerationOverrides                                                                                                             100%
  JD.Efcpt.Build.Tasks.Config.EfcptConfigOverrideApplicator                                                                                                      93.1%
  JD.Efcpt.Build.Tasks.Config.EfcptConfigOverrides                                                                                                                100%
  JD.Efcpt.Build.Tasks.Config.FileLayoutOverrides                                                                                                                 100%
  JD.Efcpt.Build.Tasks.Config.NamesOverrides                                                                                                                      100%
  JD.Efcpt.Build.Tasks.Config.ReplacementsOverrides                                                                                                               100%
  JD.Efcpt.Build.Tasks.Config.TypeMappingsOverrides                                                                                                               100%
  JD.Efcpt.Build.Tasks.ConnectionStrings.AppConfigConnectionStringParser                                                                                          100%
  JD.Efcpt.Build.Tasks.ConnectionStrings.AppSettingsConnectionStringParser                                                                                        100%
  JD.Efcpt.Build.Tasks.ConnectionStrings.ConfigurationFileTypeValidator                                                                                           100%
  JD.Efcpt.Build.Tasks.ConnectionStrings.ConnectionStringResult                                                                                                   100%
  JD.Efcpt.Build.Tasks.DacpacFingerprint                                                                                                                         96.1%
  JD.Efcpt.Build.Tasks.DbContextNameGenerator                                                                                                                    83.4%
  JD.Efcpt.Build.Tasks.Decorators.TaskExecutionContext                                                                                                             50%
  JD.Efcpt.Build.Tasks.Decorators.TaskExecutionDecorator                                                                                                          100%
  JD.Efcpt.Build.Tasks.EnsureDacpacBuilt                                                                                                                         96.1%
  JD.Efcpt.Build.Tasks.Extensions.DataRowExtensions                                                                                                               100%
  JD.Efcpt.Build.Tasks.Extensions.EnumerableExtensions                                                                                                            100%
  JD.Efcpt.Build.Tasks.Extensions.StringExtensions                                                                                                                100%
  JD.Efcpt.Build.Tasks.FileHash                                                                                                                                   100%
  JD.Efcpt.Build.Tasks.FileSystemHelpers                                                                                                                          100%
  JD.Efcpt.Build.Tasks.MessageLevelHelpers                                                                                                                        100%
  JD.Efcpt.Build.Tasks.ModuleInitializer                                                                                                                          100%
  JD.Efcpt.Build.Tasks.MsBuildPropertyHelpers                                                                                                                     100%
  JD.Efcpt.Build.Tasks.NullBuildLog                                                                                                                              88.8%
  JD.Efcpt.Build.Tasks.PathUtils                                                                                                                                 91.6%
  JD.Efcpt.Build.Tasks.ProcessResult                                                                                                                              100%
  JD.Efcpt.Build.Tasks.ProcessRunner                                                                                                                               90%
  JD.Efcpt.Build.Tasks.QuerySchemaMetadata                                                                                                                       91.3%
  JD.Efcpt.Build.Tasks.RenameGeneratedFiles                                                                                                                       100%
  JD.Efcpt.Build.Tasks.ResolveDbContextName                                                                                                                       100%
  JD.Efcpt.Build.Tasks.ResolveSqlProjAndInputs                                                                                                                   87.9%
  JD.Efcpt.Build.Tasks.RunEfcpt                                                                                                                                  60.6%
  JD.Efcpt.Build.Tasks.RunSqlPackage                                                                                                                             16.3%
  JD.Efcpt.Build.Tasks.Schema.ColumnModel                                                                                                                         100%
  JD.Efcpt.Build.Tasks.Schema.ColumnNameMapping                                                                                                                   100%
  JD.Efcpt.Build.Tasks.Schema.ConstraintModel                                                                                                                     100%
  JD.Efcpt.Build.Tasks.Schema.DatabaseProviderFactory                                                                                                            94.1%
  JD.Efcpt.Build.Tasks.Schema.ForeignKeyColumnModel                                                                                                               100%
  JD.Efcpt.Build.Tasks.Schema.ForeignKeyModel                                                                                                                      90%
  JD.Efcpt.Build.Tasks.Schema.IndexColumnModel                                                                                                                    100%
  JD.Efcpt.Build.Tasks.Schema.IndexModel                                                                                                                         92.8%
  JD.Efcpt.Build.Tasks.Schema.Providers.FirebirdSchemaReader                                                                                                     98.6%
  JD.Efcpt.Build.Tasks.Schema.Providers.MySqlSchemaReader                                                                                                         100%
  JD.Efcpt.Build.Tasks.Schema.Providers.OracleSchemaReader                                                                                                        100%
  JD.Efcpt.Build.Tasks.Schema.Providers.PostgreSqlSchemaReader                                                                                                    100%
  JD.Efcpt.Build.Tasks.Schema.Providers.SqliteSchemaReader                                                                                                        100%
  JD.Efcpt.Build.Tasks.Schema.Providers.SqlServerSchemaReader                                                                                                     100%
  JD.Efcpt.Build.Tasks.Schema.SchemaFingerprinter                                                                                                                 100%
  JD.Efcpt.Build.Tasks.Schema.SchemaModel                                                                                                                         100%
  JD.Efcpt.Build.Tasks.Schema.SchemaReaderBase                                                                                                                    100%
  JD.Efcpt.Build.Tasks.Schema.TableModel                                                                                                                         92.8%
  JD.Efcpt.Build.Tasks.SerializeConfigProperties                                                                                                                  100%
  JD.Efcpt.Build.Tasks.SqlProjectDetector                                                                                                                        93.3%
  JD.Efcpt.Build.Tasks.StageEfcptInputs                                                                                                                          95.7%
  JD.Efcpt.Build.Tasks.Strategies.CommandNormalizationStrategy                                                                                                   94.1%
  JD.Efcpt.Build.Tasks.Strategies.ProcessCommand                                                                                                                  100%
  JD.Efcpt.Build.Tasks.Utilities.DotNetToolUtilities                                                                                                             66.6%
  System.Text.RegularExpressions.Generated                                                                                                                       80.3%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__AssemblySymbolsMetadataRegex_1   86.2%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__DatabaseKeywordRegex_4           75.7%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__DataSourceKeywordRegex_6         72.3%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__FileNameMetadataRegex_0          86.2%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__InitialCatalogKeywordRegex_5     71.2%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__NonLetterRegex_2                  100%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__SolutionProjectLineRegex_7       82.5%
  System.Text.RegularExpressions.Generated.<RegexGenerator_g>F9F9425F6F5E055E5C6489D8E6FA46DE135B3C69D9A15B4CBA235D8D2417FD2EC__TrailingDigitsRegex_3            95.2%

@codecov-commenter
Copy link

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 87.49%. Comparing base (de65ff0) to head (d5ec53b).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #56      +/-   ##
==========================================
+ Coverage   79.94%   87.49%   +7.55%     
==========================================
  Files          50       50              
  Lines        3350     3350              
  Branches      455      393      -62     
==========================================
+ Hits         2678     2931     +253     
+ Misses        487      419      -68     
+ Partials      185        0     -185     
Flag Coverage Δ
unittests 87.49% <ø> (+7.55%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@JerrettDavis JerrettDavis merged commit 75b05b9 into main Jan 5, 2026
7 checks passed
@JerrettDavis JerrettDavis deleted the copilot/fix-config-file-issues branch January 5, 2026 00:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Issues with config file included with template

3 participants