chore: ignore C# Dev Kit lscache and dump files#7648
Merged
Conversation
Add *.lscache, *.dmp, and *.dump to .gitignore following the pattern established in dotnet/runtime#126718 and tracked in microsoft/vscode-dotnettools#2952. *.lscache files are generated by the C# Dev Kit language server and appear as untracked noise in any developer's working tree. *.dmp and *.dump files are .NET memory dump artifacts that can be large and may contain sensitive in-process data.
withinfocus
approved these changes
May 15, 2026
Contributor
withinfocus
left a comment
There was a problem hiding this comment.
Jinx with #7647 ... but yours covers more so I am fine with it.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #7648 +/- ##
=======================================
Coverage 59.84% 59.84%
=======================================
Files 2121 2121
Lines 93460 93460
Branches 8291 8291
=======================================
Hits 55931 55931
Misses 35548 35548
Partials 1981 1981 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
amorask-bitwarden
added a commit
that referenced
this pull request
May 18, 2026
…g convention Addresses PR review feedback. Also tightens DATETIME2(7) / NVARCHAR(N) spacing per the SQL style guide, drops *.lscache from .gitignore (handled by #7648), and regenerates EF migrations for MySQL, Postgres, and SQLite.
amorask-bitwarden
added a commit
that referenced
this pull request
May 18, 2026
…ables with bare repositories (#7644) * [PM-36949] Add OrganizationPlanMigrationCohort schema and Core domain types Add the foundation for cohort-based plan migrations: - Two tables: OrganizationPlanMigrationCohort and OrganizationPlanMigrationCohortAssignment - Two views and nine stored procedures (four CRUD on cohort, four CRUD plus ReadByOrganizationId on assignment) - Single Migrator script for MSSQL deployment - Core entities, MigrationPath value object and its registry, and bare repository interfaces under Bit.Core.Billing.Organizations.PlanMigration The cohort table holds the human-managed metadata (name, discount coupons, MigrationPathId byte) and the assignment table records each organization's position in the migration lifecycle (scheduled, migrated, churn-mitigated). Both Update SPs follow the accept-but-don't-assign pattern: immutable columns (OrganizationId, CohortId, CreatedAt) are parameters but not SET clauses. * [PM-36949] Add Dapper repositories for plan migration cohort tables OrganizationPlanMigrationCohortRepository inherits the base Repository<T, TId> CRUD methods unchanged. OrganizationPlanMigrationCohortAssignmentRepository also relies on the base for CRUD and adds GetByOrganizationIdAsync which returns at most one row (the UNIQUE constraint on OrganizationId at the database layer guarantees this). * [PM-36949] Add EF Core configurations, repositories, and provider migrations for plan migration cohort tables - EF models wrap the Core entities; the assignment model exposes nav properties for Organization and Cohort so the FK + cascade-delete is inferred by EF. - EntityTypeConfiguration classes pin ID generation to application code (ValueGeneratedNever) and declare the UNIQUE indexes plus the composite (CohortId, ScheduledAt, MigratedAt) index. - Repositories follow the OrganizationInstallationRepository template; the assignment repo adds GetByOrganizationIdAsync to mirror the SP exposed on the MSSQL side. - DatabaseContext gets two DbSet properties; auto-discovery picks up the configuration classes. - Generated migrations for MySQL, Postgres, and SQLite create matching schemas; EF truncates FK and index names on providers with 64-char identifier limits, which is consistent with the rest of the codebase. * [PM-36949] Wire up DI and add tests for plan migration cohort repositories Register both Dapper and EF Core repositories in their respective service collection extensions, following the existing AddSingleton convention in these files. Add tests: - MigrationPathIdsSnapshotTests guards the immortal byte IDs that downstream code pins on. The class- and method-level comments document why these values can never be renumbered. - MigrationPathTests covers the FromId round-trip and the null-on-unknown behavior the registry promises to callers. - OrganizationPlanMigrationCohortRepositoryTests exercises CRUD, the UNIQUE Name constraint, and verifies that ReplaceAsync ignores CreatedAt mutations (per the accept-but-don't-assign Update SP). - OrganizationPlanMigrationCohortAssignmentRepositoryTests exercises CRUD, GetByOrganizationIdAsync, the UNIQUE OrganizationId constraint, cascade-delete from both Organization and Cohort, and verifies that ReplaceAsync ignores OrganizationId, CohortId, and CreatedAt mutations. * [PM-36949] Use PlanType and MigrationPathId enums on MigrationPath Replace the byte Id with a byte-backed MigrationPathId enum and replace the string FromPlan/ToPlan fields with PlanType. Persistence is unchanged -- EF normalises enum-backed properties to their underlying type in the model snapshot, and Dapper handles enum-to-byte parameter mapping automatically. * [PM-36949] Add *.lscache to .gitignore * [PM-36949] fix: Override ReplaceAsync on EF cohort repositories for immutability parity The Dapper _Update SPs accept-but-don't-assign certain columns (CreatedAt on cohort; OrganizationId, CohortId, and CreatedAt on assignment), but the base EF Repository<T,TEntity,Guid>.ReplaceAsync uses SetValues which writes every scalar. Override on both repos and mark the immutable properties as IsModified = false so MySQL/Postgres/Sqlite match MSSQL behavior. Mirrors the existing DeviceRepository.ReplaceAsync pattern. * [PM-36949] fix: Bound cohort string columns and widen Name to 255 chars Add [MaxLength] attributes to the three cohort string properties so the EF providers (MySQL/Postgres/Sqlite) enforce the same limits as MSSQL, where the columns were already NVARCHAR-capped. Widen Name from 64 to 255 chars across MSSQL DDL, both _Create/_Update SP signatures, the Migrator script, the entity, and all three regenerated EF migrations. Coupon codes stay at 64 (Stripe IDs are short). * [PM-36949] test: Lock FromPlan and ToPlan per MigrationPath The snapshot test class doc says "byte N means a specific FromPlan -> ToPlan transition forever", but only the byte value was being asserted. A silent refactor of the registry's PlanType references would not have been caught. Add per-path FromPlan/ToPlan assertions to close the gap. * [PM-36949] chore: Apply dotnet format * [PM-36949] test: Use LaxDateTimeComparer for round-tripped DateTimes Postgres timestamp and MySQL datetime(6) store microsecond precision (6 fractional digits), but .NET DateTime is 100ns ticks (7 digits). Exact Assert.Equal fails by a single tick on round-trip. Switch the three DateTime comparisons in ReplaceAsync_UpdatesMutableColumns_AndIgnoresImmutableOnes to LaxDateTimeComparer.Default -- the same 2ms-tolerance comparer used by SendRepositoryTests and InstallationRepositoryTests for the same precision issue. * [PM-36949] refactor: Rename DateTime columns to Date suffix per naming convention Addresses PR review feedback. Also tightens DATETIME2(7) / NVARCHAR(N) spacing per the SQL style guide, drops *.lscache from .gitignore (handled by #7648), and regenerates EF migrations for MySQL, Postgres, and SQLite. * Apply dotnet format to regenerated migrations * [PM-36949] chore: Align NULL/NOT NULL columns in cohort tables
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



🎟️ Tracking
N/A
📔 Objective
Add *.lscache, *.dmp, and *.dump to .gitignore following the pattern now enshrined in dotnet runtime and tracked in vscode-dotnettools issue 2952.
*.lscache files are generated by the C# Dev Kit language server and appear as untracked noise in any developer's working tree. *.dmp and *.dump files are .NET memory dump artifacts that can be large and may contain sensitive in-process data.