From e803dc9f5d45b4c706434d2f719d1502ce566e5f Mon Sep 17 00:00:00 2001 From: Ilan Uzan Date: Thu, 4 Sep 2025 21:21:22 +0200 Subject: [PATCH] fix: dotnet warnings --- Drivers/ColumnMapping.cs | 4 ++-- Drivers/DbDriver.cs | 2 +- Drivers/MySqlConnectorDriver.cs | 14 ++++++++------ Drivers/NpgsqlDriver.cs | 9 +++++---- examples/MySqlConnectorDapperExample/Utils.cs | 8 ++++++-- .../MySqlConnectorDapperLegacyExample/Utils.cs | 4 ++++ examples/NpgsqlDapperExample/Utils.cs | 4 +++- examples/NpgsqlDapperLegacyExample/Utils.cs | 2 ++ 8 files changed, 31 insertions(+), 16 deletions(-) diff --git a/Drivers/ColumnMapping.cs b/Drivers/ColumnMapping.cs index 7236aa22..87c1bd7c 100644 --- a/Drivers/ColumnMapping.cs +++ b/Drivers/ColumnMapping.cs @@ -13,7 +13,7 @@ public class ColumnMapping( Func? writerFn = null, Func? convertFunc = null, string? sqlMapper = null, - string? sqlMapperImpl = null) + Func? sqlMapperImpl = null) { public Dictionary DbTypes { get; } = dbTypes; public Func ReaderFn { get; } = readerFn; @@ -22,5 +22,5 @@ public class ColumnMapping( public Func? WriterFn { get; } = writerFn; public Func? ConvertFunc { get; } = convertFunc; public string? SqlMapper { get; } = sqlMapper; - public string? SqlMapperImpl { get; } = sqlMapperImpl; + public Func? SqlMapperImpl { get; } = sqlMapperImpl; } \ No newline at end of file diff --git a/Drivers/DbDriver.cs b/Drivers/DbDriver.cs index a9c4f59a..6fb12f61 100644 --- a/Drivers/DbDriver.cs +++ b/Drivers/DbDriver.cs @@ -187,7 +187,7 @@ private MemberDeclarationSyntax[] GetSqlMapperMemberDeclarations() { return [.. ColumnMappings .Where(m => TypeExistsInQueries(m.Key) && m.Value.SqlMapperImpl is not null) - .Select(m => ParseMemberDeclaration(m.Value.SqlMapperImpl!)!)]; + .Select(m => ParseMemberDeclaration(m.Value.SqlMapperImpl!(Options.DotnetFramework.IsDotnetCore()))!)]; } public abstract string TransformQueryText(Query query); diff --git a/Drivers/MySqlConnectorDriver.cs b/Drivers/MySqlConnectorDriver.cs index 527eccee..596db8b1 100644 --- a/Drivers/MySqlConnectorDriver.cs +++ b/Drivers/MySqlConnectorDriver.cs @@ -156,7 +156,7 @@ public sealed partial class MySqlConnectorDriver( public override string TransactionClassName => "MySqlTransaction"; - private const string JsonElementTypeHandler = """ + private static readonly Func JsonElementTypeHandler = _ => $$""" private class JsonElementTypeHandler : SqlMapper.TypeHandler { public override JsonElement Parse(object value) @@ -291,7 +291,8 @@ public override MemberDeclarationSyntax[] GetEnumExtensionsMembers(string name, private MemberDeclarationSyntax[] GetSetTypeHandlers() { - var setTypeHandlerFunc = (string x) => + var optionalNullableSuffix = Options.DotnetFramework.IsDotnetCore() ? "?" : string.Empty; + string setTypeHandlerFunc(string x) => $$""" private class {{x}}TypeHandler : SqlMapper.TypeHandler> { @@ -302,14 +303,16 @@ private class {{x}}TypeHandler : SqlMapper.TypeHandler> throw new DataException($"Cannot convert {value?.GetType()} to HashSet<{{x}}>"); } - public override void SetValue(IDbDataParameter parameter, HashSet<{{x}}> value) + public override void SetValue(IDbDataParameter parameter, HashSet<{{x}}>{{optionalNullableSuffix}} value) { + if (value is null) + return; parameter.Value = string.Join(",", value); } } """; - return Queries + return [.. Queries .SelectMany(q => q.Columns) .Where(c => { @@ -318,8 +321,7 @@ public override void SetValue(IDbDataParameter parameter, HashSet<{{x}}> value) }) .Select(c => setTypeHandlerFunc(EnumToModelName(c))) .Distinct() - .Select(m => ParseMemberDeclaration(m)!) - .ToArray(); + .Select(m => ParseMemberDeclaration(m)!)]; } public override MemberDeclarationSyntax[] GetMemberDeclarationsForUtils() diff --git a/Drivers/NpgsqlDriver.cs b/Drivers/NpgsqlDriver.cs index a4f9e935..69936a4b 100644 --- a/Drivers/NpgsqlDriver.cs +++ b/Drivers/NpgsqlDriver.cs @@ -345,7 +345,7 @@ public NpgsqlDriver( public override string TransactionClassName => "NpgsqlTransaction"; - private const string JsonElementTypeHandler = """ + private static readonly Func JsonElementTypeHandler = _ => $$""" private class JsonElementTypeHandler : SqlMapper.TypeHandler { public override JsonElement Parse(object value) @@ -362,8 +362,7 @@ public override void SetValue(IDbDataParameter parameter, JsonElement value) } """; - private const string XmlDocumentTypeHandler = - """ + private static readonly Func XmlDocumentTypeHandler = isDotnetCore => $$""" private class XmlDocumentTypeHandler : SqlMapper.TypeHandler { public override XmlDocument Parse(object value) @@ -377,8 +376,10 @@ public override XmlDocument Parse(object value) throw new DataException($"Cannot convert {value?.GetType()} to XmlDocument"); } - public override void SetValue(IDbDataParameter parameter, XmlDocument value) + public override void SetValue(IDbDataParameter parameter, XmlDocument{{(isDotnetCore ? "?" : string.Empty)}} value) { + if (value is null) + return; parameter.Value = value.OuterXml; } } diff --git a/examples/MySqlConnectorDapperExample/Utils.cs b/examples/MySqlConnectorDapperExample/Utils.cs index f8bb27fe..86043902 100644 --- a/examples/MySqlConnectorDapperExample/Utils.cs +++ b/examples/MySqlConnectorDapperExample/Utils.cs @@ -48,8 +48,10 @@ public override HashSet Parse(object value) throw new DataException($"Cannot convert {value?.GetType()} to HashSet"); } - public override void SetValue(IDbDataParameter parameter, HashSet value) + public override void SetValue(IDbDataParameter parameter, HashSet? value) { + if (value is null) + return; parameter.Value = string.Join(",", value); } } @@ -63,8 +65,10 @@ public override HashSet Parse(object value) throw new DataException($"Cannot convert {value?.GetType()} to HashSet"); } - public override void SetValue(IDbDataParameter parameter, HashSet value) + public override void SetValue(IDbDataParameter parameter, HashSet? value) { + if (value is null) + return; parameter.Value = string.Join(",", value); } } diff --git a/examples/MySqlConnectorDapperLegacyExample/Utils.cs b/examples/MySqlConnectorDapperLegacyExample/Utils.cs index 47c4f482..1ab285b0 100644 --- a/examples/MySqlConnectorDapperLegacyExample/Utils.cs +++ b/examples/MySqlConnectorDapperLegacyExample/Utils.cs @@ -51,6 +51,8 @@ public override HashSet Parse(object value) public override void SetValue(IDbDataParameter parameter, HashSet value) { + if (value is null) + return; parameter.Value = string.Join(",", value); } } @@ -66,6 +68,8 @@ public override HashSet Parse(object value) public override void SetValue(IDbDataParameter parameter, HashSet value) { + if (value is null) + return; parameter.Value = string.Join(",", value); } } diff --git a/examples/NpgsqlDapperExample/Utils.cs b/examples/NpgsqlDapperExample/Utils.cs index 24f86433..74260d3b 100644 --- a/examples/NpgsqlDapperExample/Utils.cs +++ b/examples/NpgsqlDapperExample/Utils.cs @@ -40,8 +40,10 @@ public override XmlDocument Parse(object value) throw new DataException($"Cannot convert {value?.GetType()} to XmlDocument"); } - public override void SetValue(IDbDataParameter parameter, XmlDocument value) + public override void SetValue(IDbDataParameter parameter, XmlDocument? value) { + if (value is null) + return; parameter.Value = value.OuterXml; } } diff --git a/examples/NpgsqlDapperLegacyExample/Utils.cs b/examples/NpgsqlDapperLegacyExample/Utils.cs index 6aa1fd35..db87e7c6 100644 --- a/examples/NpgsqlDapperLegacyExample/Utils.cs +++ b/examples/NpgsqlDapperLegacyExample/Utils.cs @@ -43,6 +43,8 @@ public override XmlDocument Parse(object value) public override void SetValue(IDbDataParameter parameter, XmlDocument value) { + if (value is null) + return; parameter.Value = value.OuterXml; } }