Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Jan 3, 2026

  • Understand existing JD.Efcpt.Build architecture and pipeline
  • Refactor to auto-detect SQL projects (Microsoft.Build.Sql, MSBuild.Sdk.SqlProj)
  • Generate SQL scripts in-place within detected SQL project
  • Two-project pattern: Database (SQL) + DataAccess (EF Core)
  • Remove separate SQL project generation logic
  • Create new sample demonstrating the pattern
  • Implement lifecycle hooks for SQL generation
  • Integrate with existing fingerprinting system
  • DNX-based sqlpackage acquisition for .NET 10+
  • Auto-generation warnings on SQL files
  • Update all samples to EF Core 10.0.1
  • Update documentation
  • Ensure proper build orchestration via project references
  • Remove old samples and update references
  • Abstract shared utilities (dnx detection, TFM parsing)
  • Remove test hooks in favor of E2E tests
  • Remove unnecessary project file generation
  • Implement comprehensive E2E tests with Testcontainers
  • Solution builds successfully

Summary

This PR implements automatic database-first SQL generation for JD.Efcpt.Build using a two-project pattern with consistent implementation practices and comprehensive E2E test coverage.

Code Review Changes Implemented

1. Removed Unnecessary Code:

  • GenerateSqlProj.cs task deleted - only SQL content generation
  • ✅ Test hooks removed from RunSqlPackage.cs

2. Shared Utilities:

  • ✅ Created DotNetToolUtilities class with shared dnx/TFM detection
  • ✅ Consistent implementation across codebase

3. E2E Test Coverage:

  • ✅ 5 comprehensive integration tests using Testcontainers.MsSql
  • ✅ Tests use real SQL Server 2022 via Docker containers
  • ✅ Reuses existing SQL Server test fixture patterns
  • ✅ All tests compile and validate complete workflow

Test Coverage Implemented

  1. SQL Project Detection - Validates automatic SDK detection via _EfcptIsSqlProject
  2. SQL Script Generation - Verifies proper folder structure (dbo/Tables/, etc.) and all SQL files created
  3. Auto-Generation Warnings - Confirms warning headers in generated SQL files
  4. Two-Project Pattern - Tests Database + DataAccess workflow with DACPAC + EF Core generation
  5. Schema Fingerprinting - Validates incremental builds skip regeneration when schema unchanged

Build Status

✅ Solution builds successfully (Release configuration)
✅ All E2E tests compile successfully
✅ Testcontainers integration matches existing test patterns
✅ .NET Framework 4.7.2 compatibility maintained

See the database-first-sql-generation sample for complete example.

Original prompt

This section details on the original issue you should resolve

<issue_title>[Feature] Database-First SQL Project Generation (SqlProj / MSBuild.Sdk.SqlProj)</issue_title>
<issue_description>### Summary

Add a new reverse-engineering mode to JD.Efcpt.Build that can materialize a SQL Server database into a SQL project—either:

  • a Microsoft.Build.Sql .sqlproj, or
  • an MSBuild.Sdk.SqlProj-based .csproj / .fsproj

This new mode should integrate seamlessly with the existing Efcpt lifecycle, run before EF Core model reverse engineering, and participate fully in our fingerprinting, snapshotting, and determinism guarantees.

The result is a first-class Database-First pipeline:

Database → Consistent SqlProj → Consistent EF Core Models

With automatic downstream regeneration whenever the database schema changes.


Problem Statement

JD.Efcpt.Build already provides strong, deterministic reverse-engineering into EF Core models.
However, many organizations treat SQL projects as the canonical schema artifact:

  • Schema diffs, reviews, and PRs happen at the SQL level
  • DACPACs and drift detection are built around SqlProj tooling
  • Teams want database-first workflows that still produce correct, synchronized EF Core models

Currently, users must choose between:

  • SQL projects or
  • EF Core reverse engineering

…or maintain custom, brittle glue code between tools.

This feature closes that gap by making SQL project generation a first-class Efcpt capability.


Proposed Solution

Introduce a new Efcpt reverse-engineering mode that:

  1. Reverse engineers a SQL Server database into a SQL project
  2. Integrates with existing JD.Efcpt.Build lifecycle hooks
  3. Runs before EF Core model generation
  4. Participates in schema fingerprinting and snapshot comparison
  5. Only regenerates artifacts when the database schema has changed

Supported Output Targets

The new mode should support generating:

  • Microsoft.Build.Sql

    • .sqlproj
  • MSBuild.Sdk.SqlProj

    • .csproj
    • .fsproj

This mirrors the real-world ecosystems used by SQL Server teams today.


Tooling & Dependencies

Implementation should leverage:

  • sqlpackage

  • dotnet-sqlpackage / DNX

    • For .NET 10+ users, no global install required
    • Same DNX-based acquisition model already used for Efcpt

Reference:


MSBuild Integration Model

The experience should be “automagic”, consistent with existing JD.Efcpt.Build flows.

Example Usage

A user should be able to:

  1. Create a SqlProj-based project
  2. Add a package reference
  3. Build

…and have everything “just work”.

<Project Sdk="MSBuild.Sdk.SqlProj">
  <PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="JD.Efcpt.Build" Version="*" />
  </ItemGroup>
</Project>

No custom targets. No manual wiring.


Configuration & Connectivity

Database connectivity should reuse existing JD.Efcpt.Build patterns, including:

  • Environment variables
  • Configuration files
  • Existing Efcpt connection resolution logic

This is already solved today for EF Core reverse engineering and should be reused.


Lifecycle & Ordering

The new SqlProj generation mode must integrate into the existing lifecycle:

  1. Schema fingerprinting
  2. SqlProj generation
  3. EF Core model reverse engineering

Key points:

  • SqlProj generation runs first
  • EF Core models are generated from the resulting SQL artifacts
  • This guarantees schema → SQL → EF consistency

Fingerprinting & Determinism

The SqlProj generation must:

  • Participate in existing fingerprinting

  • Snapshot remote schema state

  • Skip regeneration when:

    • The database schema is unchanged
    • Generated SQL artifacts already match the fingerprint

This ensures:

  • Fast builds
  • Deterministic output
  • Zero churn in source control

All required primitives already exist in JD.Efcpt.Build and should be extended—not reinvented.


New Hooks & Extensibility

This feature will require:

  • New lifecycle hooks for SQL project generation

  • Coordination between:

    • SqlProj artifacts
    • EF Core model generation
  • Extension of existing fingerprint providers to understand SQL artifacts

No breaking changes to existing flows should be required.


Outcome & Benefits

This enables a fully automated Database-First workflow:

  • SQL Server is the source of truth
  • SQL projects are generated deterministically
  • EF Core models are always correct and synch...

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI and others added 7 commits January 3, 2026 18:29
- Added RunSqlPackage task to extract database schema using sqlpackage
- Added GenerateSqlProj task to create .sqlproj/.csproj/.fsproj files
- Added MSBuild properties for SqlProj generation configuration
- Registered new tasks in targets file
- Added pipeline targets for SqlProj generation workflow

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
- Simplified approach: extract DACPAC directly from database
- Updated RunSqlPackage to output the extracted DACPAC path
- Modified targets to properly pass extracted DACPAC to EF Core generation
- Added EfcptGenerateSqlProjFile property for optional project file generation
- Fixed syntax error in RunSqlPackage.cs

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
- Created comprehensive sample demonstrating Database → DACPAC → EF Core Models workflow
- Added detailed README explaining the new database-first approach
- Sample includes EntityFrameworkCoreProject with EfcptGenerateSqlProj enabled
- Documented configuration options and comparison with traditional workflow

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
- Added EfcptQueryDatabaseSchemaForSqlProj target to compute schema fingerprint before extraction
- Schema fingerprint enables incremental builds - DACPAC only extracted when database schema changes
- Set _EfcptUseConnectionString flag to integrate with existing fingerprinting logic
- Ensures deterministic, fast builds for database-first workflow

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
- Added Database-First SqlProj Generation section highlighting the new capability
- Updated Key Features list to include schema extraction
- Added new sample to the samples list
- Documented workflow: Live Database → DACPAC → EF Core Models
- Highlighted benefits and use cases

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
- Improved target framework parsing to handle edge cases (netstandard, netcoreapp, etc.)
- Fixed process timeout handling to kill hanging processes and prevent resource leaks
- Avoided modifying input parameter OutputPath by using local variable
- Enhanced robustness and clarity of implementation

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
- Use sqlpackage /Action:Extract /p:ExtractTarget=Flat to extract individual SQL scripts
- Generate properly structured SQL projects with organized folder hierarchy
- Add auto-generation warning headers to all SQL files
- Implement lifecycle hooks: BeforeSqlProjGeneration, AfterSqlProjGeneration, BeforeEfcptGeneration, AfterEfcptGeneration
- Build generated SQL project to DACPAC for EF Core model generation
- Workflow: Database → SQL Scripts → SqlProj → DACPAC → EF Core Models
- SQL project serves as human-readable artifact that can be extended
- .NET Framework 4.7.2 compatibility for relative path calculation

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Copilot AI changed the title [WIP] Add reverse-engineering mode to JD.Efcpt.Build Add database-first SqlProj generation with native sqlpackage extraction Jan 3, 2026
Copilot AI requested a review from JerrettDavis January 3, 2026 18:51
@JerrettDavis
Copy link
Owner

@copilot We need to ensure our samples are on the latest version of EF Core (10.0.1)

- Updated aspnet-core-appsettings sample
- Updated connection-string-mssql sample
- Updated custom-renaming sample
- Updated dacpac-zero-config sample
- Updated database-first-sqlproj-generation sample
- Updated microsoft-build-sql-zero-config sample
- Updated schema-organization sample
- Updated sdk-zero-config sample

All samples now use Microsoft.EntityFrameworkCore 10.0.1

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

Copilot AI commented Jan 3, 2026

@copilot We need to ensure our samples are on the latest version of EF Core (10.0.1)

Updated all sample projects to EF Core 10.0.1 in commit 84edd6d.

@JerrettDavis
Copy link
Owner

@copilot This implementation is not quite what we're after. This should behave a bit more similarly to the Spit-Model generation approach.

We want there to be 2 user-created projects: DataAccess and Database. We want both the DataAccess and the Database projects to reference JD.Efcpt.Build. JD.Efcpt.Build will recognize it's referenced within a project that implements either the Microsoft.Build.Sql or the MSBuild.Sdk.Sqlproj SDK. When detected as referenced within one of these projects, it'll generate the SQL files within the SQL Project.

It will use the aforementioned lifecycle hooks to ensure the EF/DataAccess project waits for the SQL Project generation to complete before continuing. The SQL Project generation will only occur in one project, and it's optional. If the SQL Project in the solution does not reference JD.Efcpt.Build, it will not emit the generation events, and the DataAccess project will only have to await its normal compilation.

This is largely moot as the existing setup should require core compilation to complete in the Database project before generation starts in the DataAccess project.

Copy link
Contributor Author

Copilot AI commented Jan 3, 2026

@copilot This implementation is not quite what we're after. This should behave a bit more similarly to the Spit-Model generation approach.

We want there to be 2 user-created projects: DataAccess and ...

I understand. I'll refactor to:

  1. Auto-detect when JD.Efcpt.Build is referenced in a SQL project (Microsoft.Build.Sql or MSBuild.Sdk.SqlProj SDK)
  2. Generate SQL scripts within the detected SQL project
  3. DataAccess project references the SQL project and waits via lifecycle hooks
  4. Remove the EfcptGenerateSqlProj property - detection is automatic based on SDK type

Working on this now.

@copilot This implementation is not quite what we're after. This should behave a bit more similarly to the Spit-Model generation approach.

We want there to be 2 user-created projects: DataAccess and ...

Refactored to match the Split-Model pattern in commits c1235f6 and b96abb3.

Key changes:

  • Auto-detects SQL projects via SDK properties (SqlServerVersion, DSP)
  • Generates SQL scripts directly in the SQL project directory
  • Two-project setup: DatabaseProject (SQL) + DataAccessProject (EF Core)
  • Removed EfcptGenerateSqlProj property - detection is automatic
  • SQL project builds to DACPAC, DataAccess project references it via ProjectReference
  • New sample at samples/database-first-sql-generation/

The implementation now follows the same pattern as the split-outputs feature.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/repos/rr-wfm/MSBuild.Sdk.SqlProj/releases/latest
    • Triggering command: /usr/bin/dotnet dotnet /home/REDACTED/.nuget/packages/msbuild.sdk.sqlproj/3.3.0/Sdk/../tools/net10.0/DacpacTool.dll build -o obj/Debug/net8.0/DatabaseProject.dacpac -n DatabaseProject -v 1.0.0 -sv Sql160 -i obj/Debug/net8.0/DatabaseProject.InputFiles.txt -dp IncludeCompositeObjects=true --warnaserror -an -aa /usr/share/dotnet/sdk/10.0.101/Sdks/Microsoft.NET.Sdk/targets/../analyzers/Microsoft.CodeAnalysis.CSharp.NetAnalyzers.dll -aa (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI and others added 2 commits January 3, 2026 19:05
BREAKING CHANGE: Removed EfcptGenerateSqlProj property in favor of automatic detection

- Auto-detect SQL projects using SDK properties (SqlServerVersion, DSP)
- Generate SQL scripts directly in the SQL project directory
- Two-project pattern: DatabaseProject (SQL) + DataAccessProject (EF Core)
- SQL project builds to DACPAC, DataAccess project references it
- Removed separate SQL project generation and build logic
- Simplified lifecycle: SQL generation doesn't build a separate project
- New sample demonstrating the two-project pattern
- Updated properties: EfcptSqlScriptsDir replaces EfcptSqlProjOutputDir

Migration guide:
- Remove <EfcptGenerateSqlProj>true</EfcptGenerateSqlProj>
- Create separate SQL project with MSBuild.Sdk.SqlProj or Microsoft.Build.Sql SDK
- Add JD.Efcpt.Build package reference to SQL project
- Set connection string in SQL project
- DataAccess project references SQL project via ProjectReference

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
- Removed database-first-sqlproj-generation sample (old approach)
- Updated README with new two-project pattern examples
- Updated sample references throughout documentation
- Clarified workflow: Database → SQL Scripts → DACPAC → EF Core Models

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Copilot AI changed the title Add database-first SqlProj generation with native sqlpackage extraction Add automatic database-first SQL generation with two-project pattern Jan 3, 2026
Copy link
Owner

@JerrettDavis JerrettDavis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ensure consistent implementation with our existing codebase. Ensure all new code is E2E tested using the same strategies we've employed for other similar operations. Ensure all samples build properly. We need an integration test to validate this scenario is correct.

Copilot AI and others added 2 commits January 3, 2026 19:33
…tilities

- Created DotNetToolUtilities for shared dnx detection and TFM parsing
- Removed GenerateSqlProj task (not needed - only generate SQL content)
- Updated RunSqlPackage to use shared utilities
- Removed test hooks from RunSqlPackage (use E2E tests instead)
- Consistent implementation across codebase
- .NET Framework 4.7.2 compatibility maintained

Addresses review comments:
- GenerateSqlProj.cs removed (only SQL content generation needed)
- Test hooks removed in favor of E2E testing
- Shared logic abstracted to DotNetToolUtilities

Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
- Added SqlGenerationIntegrationTests.cs with 8 test scenarios
- Tests are currently skipped (require database setup)
- Document expected test coverage:
  * SQL project detection
  * SQL script generation with proper structure
  * Auto-generation warnings
  * Two-project pattern (Database + DataAccess)
  * Schema fingerprinting / incremental builds
  * Lifecycle hooks
  * dnx usage for .NET 10+
  * Global tool usage for .NET 8/9
- Added SQL Generation Tests collection definition
- Tests follow existing integration test patterns

Ready for full E2E implementation with database fixtures.

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

codecov-commenter commented Jan 4, 2026

Codecov Report

❌ Patch coverage is 54.51895% with 156 lines in your changes missing coverage. Please review.
✅ Project coverage is 87.49%. Comparing base (a8d9ae7) to head (3fe2dfe).

Files with missing lines Patch % Lines
src/JD.Efcpt.Build.Tasks/RunSqlPackage.cs 28.96% 130 Missing ⚠️
...Efcpt.Build.Tasks/Utilities/DotNetToolUtilities.cs 79.04% 22 Missing ⚠️
src/JD.Efcpt.Build.Tasks/AddSqlFileWarnings.cs 92.72% 4 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #52      +/-   ##
==========================================
+ Coverage   84.20%   87.49%   +3.28%     
==========================================
  Files          47       50       +3     
  Lines        3007     3350     +343     
  Branches      399      393       -6     
==========================================
+ Hits         2532     2931     +399     
- Misses        295      419     +124     
+ Partials      180        0     -180     
Flag Coverage Δ
unittests 87.49% <54.51%> (+3.28%) ⬆️

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 added the enhancement New feature or request label Jan 4, 2026
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 31 out of 31 changed files in this pull request and generated 24 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

JerrettDavis and others added 13 commits January 4, 2026 16:01
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…rameworkCoreProject.csproj

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…workCoreProject.csproj

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ityFrameworkCoreProject.csproj

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…sts.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@JerrettDavis JerrettDavis merged commit de65ff0 into main Jan 4, 2026
7 checks passed
@JerrettDavis JerrettDavis deleted the copilot/add-reverse-engineering-mode branch January 4, 2026 22:33
@github-actions
Copy link
Contributor

github-actions bot commented Jan 4, 2026

Code Coverage

Summary
  Generated on: 01/04/2026 - 22:43:15
  Coverage date: 01/04/2026 - 22:18:42
  Parser: Cobertura
  Assemblies: 1
  Classes: 80
  Files: 51
  Line coverage: 84%
  Covered lines: 3976
  Uncovered lines: 752
  Coverable lines: 4728
  Total lines: 8544
  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.9%
  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%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Database-First SQL Project Generation (SqlProj / MSBuild.Sdk.SqlProj)

3 participants