-
Notifications
You must be signed in to change notification settings - Fork 103
Open
Description
.NET 8 DbContext uses case insensitive fields with SQL Server, which can lead to failures when using keys that only differ in casing.
As described by ajcvickers, case sensitive comparers should be used:
// From .NET 8 onwards, string comparisons are case insensitive by default in EF Core.
// We need to explicitly set case sensitive comparers for Key and ResourceKey properties.
var caseSensitiveComparer = new ValueComparer<string>(
(l, r) => string.Equals(l, r, StringComparison.Ordinal),
v => v.GetHashCode(),
v => v);
builder.Entity<LocalizationRecord>().Property(m => m.Key).Metadata.SetValueComparer(caseSensitiveComparer);
builder.Entity<LocalizationRecord>().Property(m => m.ResourceKey).Metadata.SetValueComparer(caseSensitiveComparer);
Metadata
Metadata
Assignees
Labels
No labels