Skip to content

Commit 150d5af

Browse files
committed
Reduce the scope of the changes to dotnet#20604 specifically
1 parent 0a70cc4 commit 150d5af

File tree

3 files changed

+3
-38
lines changed

3 files changed

+3
-38
lines changed

src/EFCore.Relational/Storage/RelationalTypeMapping.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,7 @@ public virtual string GenerateSqlLiteral(object? value)
572572
{
573573
value = NormalizeEnumValue(value);
574574

575-
if (Converter != null && Converter.ProviderClrType.UnwrapNullableType() != value?.GetType())
575+
if (Converter != null)
576576
{
577577
value = Converter.ConvertToProvider(value);
578578
}

src/EFCore.SqlServer/Query/Internal/SqlServerObjectToStringTranslator.cs

+1-16
Original file line numberDiff line numberDiff line change
@@ -102,22 +102,7 @@ public SqlServerObjectToStringTranslator(ISqlExpressionFactory sqlExpressionFact
102102

103103
if (instance.Type.IsEnum)
104104
{
105-
if (instance.TypeMapping?.DbType == DbType.String
106-
|| string.Equals(instance.TypeMapping?.StoreTypeNameBase, "VARCHAR", StringComparison.OrdinalIgnoreCase))
107-
{
108-
return instance;
109-
}
110-
else
111-
{
112-
var cases = Enum.GetValues(instance.Type)
113-
.Cast<object>()
114-
.Select(value => new CaseWhenClause(
115-
_sqlExpressionFactory.Equal(instance, _sqlExpressionFactory.Constant(value)),
116-
_sqlExpressionFactory.Constant(value?.ToString(), typeof(string))))
117-
.ToArray();
118-
119-
return _sqlExpressionFactory.Case(cases, _sqlExpressionFactory.Constant(string.Empty, typeof(string)));
120-
}
105+
return _sqlExpressionFactory.Convert(instance, typeof(string));
121106
}
122107

123108
return TypeMapping.TryGetValue(instance.Type, out var storeType)

src/EFCore.Sqlite.Core/Query/Internal/SqliteObjectToStringTranslator.cs

+1-21
Original file line numberDiff line numberDiff line change
@@ -99,27 +99,7 @@ public SqliteObjectToStringTranslator(ISqlExpressionFactory sqlExpressionFactory
9999
_sqlExpressionFactory.Constant(true.ToString()));
100100
}
101101

102-
if (instance.Type.IsEnum)
103-
{
104-
if (instance.TypeMapping?.DbType == DbType.String
105-
|| string.Equals(instance.TypeMapping?.StoreType, "TEXT", StringComparison.OrdinalIgnoreCase))
106-
{
107-
return instance;
108-
}
109-
else
110-
{
111-
var cases = Enum.GetValues(instance.Type)
112-
.Cast<object>()
113-
.Select(value => new CaseWhenClause(
114-
_sqlExpressionFactory.Equal(instance, _sqlExpressionFactory.Constant(value)),
115-
_sqlExpressionFactory.Constant(value?.ToString(), typeof(string))))
116-
.ToArray();
117-
118-
return _sqlExpressionFactory.Case(cases, _sqlExpressionFactory.Constant(string.Empty, typeof(string)));
119-
}
120-
}
121-
122-
return TypeMapping.Contains(instance.Type)
102+
return TypeMapping.Contains(instance.Type) || instance.Type.IsEnum
123103
? _sqlExpressionFactory.Convert(instance, typeof(string))
124104
: null;
125105
}

0 commit comments

Comments
 (0)