Skip to content

Commit fa9c96a

Browse files
authored
revert #2050 - see #2049 for more details (#2070)
* revert #2050 - see #2049 for more details
1 parent ad16263 commit fa9c96a

File tree

2 files changed

+32
-18
lines changed

2 files changed

+32
-18
lines changed

Dapper/SqlMapper.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -193,9 +193,7 @@ public TypeMapEntry(DbType dbType, TypeMapEntryFlags flags)
193193
public static readonly TypeMapEntry
194194
DoNotSet = new((DbType)(-2), TypeMapEntryFlags.None),
195195
DoNotSetFieldValue = new((DbType)(-2), TypeMapEntryFlags.UseGetFieldValue),
196-
DecimalFieldValue = new(DbType.Decimal, TypeMapEntryFlags.SetType | TypeMapEntryFlags.UseGetFieldValue),
197-
StringFieldValue = new(DbType.String, TypeMapEntryFlags.SetType | TypeMapEntryFlags.UseGetFieldValue),
198-
BinaryFieldValue = new(DbType.Binary, TypeMapEntryFlags.SetType | TypeMapEntryFlags.UseGetFieldValue);
196+
DecimalFieldValue = new(DbType.Decimal, TypeMapEntryFlags.SetType | TypeMapEntryFlags.UseGetFieldValue);
199197

200198
public static implicit operator TypeMapEntry(DbType dbType)
201199
=> new(dbType, TypeMapEntryFlags.SetType);
@@ -221,13 +219,13 @@ static SqlMapper()
221219
[typeof(double)] = DbType.Double,
222220
[typeof(decimal)] = DbType.Decimal,
223221
[typeof(bool)] = DbType.Boolean,
224-
[typeof(string)] = TypeMapEntry.StringFieldValue,
222+
[typeof(string)] = DbType.String,
225223
[typeof(char)] = DbType.StringFixedLength,
226224
[typeof(Guid)] = DbType.Guid,
227225
[typeof(DateTime)] = TypeMapEntry.DoNotSet,
228226
[typeof(DateTimeOffset)] = DbType.DateTimeOffset,
229227
[typeof(TimeSpan)] = TypeMapEntry.DoNotSet,
230-
[typeof(byte[])] = TypeMapEntry.BinaryFieldValue,
228+
[typeof(byte[])] = DbType.Binary,
231229
[typeof(byte?)] = DbType.Byte,
232230
[typeof(sbyte?)] = DbType.SByte,
233231
[typeof(short?)] = DbType.Int16,
@@ -3928,7 +3926,12 @@ public static void ThrowDataException(Exception ex, int index, IDataReader reade
39283926
}
39293927
else
39303928
{
3931-
formattedValue = Convert.ToString(value) + " - " + Type.GetTypeCode(value.GetType());
3929+
formattedValue = Convert.ToString(value) + " - " + Identify(value.GetType());
3930+
}
3931+
static string Identify(Type type)
3932+
{
3933+
var tc = Type.GetTypeCode(type);
3934+
return tc == TypeCode.Object ? type.Name : tc.ToString();
39323935
}
39333936
}
39343937
catch (Exception valEx)

tests/Dapper.Tests/TypeHandlerTests.cs

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,18 @@ public void TestChangingDefaultStringTypeMappingToAnsiString()
2828

2929
SqlMapper.PurgeQueryCache();
3030

31-
SqlMapper.AddTypeMap(typeof(string), DbType.AnsiString, true); // Change Default String Handling to AnsiString
32-
var result02 = connection.Query<string>(sql, param).FirstOrDefault();
33-
Assert.Equal("varchar", result02);
31+
SqlMapper.AddTypeMap(typeof(string), DbType.AnsiString, false); // Change Default String Handling to AnsiString
32+
try
33+
{
34+
var result02 = connection.Query<string>(sql, param).FirstOrDefault();
35+
Assert.Equal("varchar", result02);
3436

35-
SqlMapper.PurgeQueryCache();
36-
SqlMapper.AddTypeMap(typeof(string), DbType.String, true); // Restore Default to Unicode String
37+
SqlMapper.PurgeQueryCache();
38+
}
39+
finally
40+
{
41+
SqlMapper.AddTypeMap(typeof(string), DbType.String, false); // Restore Default to Unicode String
42+
}
3743
}
3844

3945
[Fact]
@@ -46,13 +52,18 @@ public void TestChangingDefaultStringTypeMappingToAnsiStringFirstOrDefault()
4652
Assert.Equal("nvarchar", result01);
4753

4854
SqlMapper.PurgeQueryCache();
55+
SqlMapper.AddTypeMap(typeof(string), DbType.AnsiString, false); // Change Default String Handling to AnsiString
56+
try
57+
{
58+
var result02 = connection.QueryFirstOrDefault<string>(sql, param);
59+
Assert.Equal("varchar", result02);
4960

50-
SqlMapper.AddTypeMap(typeof(string), DbType.AnsiString, true); // Change Default String Handling to AnsiString
51-
var result02 = connection.QueryFirstOrDefault<string>(sql, param);
52-
Assert.Equal("varchar", result02);
53-
54-
SqlMapper.PurgeQueryCache();
55-
SqlMapper.AddTypeMap(typeof(string), DbType.String, true); // Restore Default to Unicode String
61+
SqlMapper.PurgeQueryCache();
62+
}
63+
finally
64+
{
65+
SqlMapper.AddTypeMap(typeof(string), DbType.String, false); // Restore Default to Unicode String
66+
}
5667
}
5768

5869
[Fact]
@@ -643,7 +654,7 @@ public void Issue149_TypeMismatch_SequentialAccess()
643654
{
644655
Guid guid = Guid.Parse("cf0ef7ac-b6fe-4e24-aeda-a2b45bb5654e");
645656
var ex = Assert.ThrowsAny<Exception>(() => connection.Query<Issue149_Person>("select @guid as Id", new { guid }).First());
646-
Assert.Equal("Error parsing column 0 (Id=n/a - Unable to cast object of type 'System.Guid' to type 'System.String'.)", ex.Message);
657+
Assert.Equal("Error parsing column 0 (Id=cf0ef7ac-b6fe-4e24-aeda-a2b45bb5654e - Guid)", ex.Message);
647658
}
648659

649660
public class Issue149_Person { public string? Id { get; set; } }

0 commit comments

Comments
 (0)