Bug #90149 | NET.Core C# MySqlParameter value returns null | ||
---|---|---|---|
Submitted: | 20 Mar 2018 19:29 | Modified: | 23 Nov 2021 16:16 |
Reporter: | Karl Krieger | Email Updates: | |
Status: | Won't fix | Impact on me: | |
Category: | Connector / NET | Severity: | S2 (Serious) |
Version: | 6.10.6 | OS: | Windows (Windows 10 64 bit) |
Assigned to: | CPU Architecture: | Any | |
Tags: | C#, core, MySQL, MySqlParameter, NET |
[20 Mar 2018 19:29]
Karl Krieger
[21 Mar 2018 10:53]
Karl Krieger
Additional Info * Visual Studio 2017 community edition * Net core 2.0 c# application * I added library Mysql.Data (6.10.6) using NuGet
[21 Mar 2018 18:25]
Bradley Grainger
This looks like a C# compiler overload resolution problem, not necessarily a Connector/NET issue (although it's facilitated by problematic API design). This code invokes the MySqlParameter(string parameterName, MySqlDbType dbType) overload, with an argument value of MySqlDbType.Decimal (== 0). MySqlParameter b = new MySqlParameter("b", value_b); A workaround is to explicitly invoke the MySqlParameter(string parameterName, object value) overload: MySqlParameter b = new MySqlParameter("b", (object) value_b); I don't know why MySqlDbType is a better overload resolution match for a const uint. You could ask on Stack Overflow (or file a bug on Roslyn but I suspect it's either by design or a long-standing decision that can't be changed for backwards compatibility reasons).
[21 Mar 2018 19:21]
Karl Krieger
Interesting, wonder why not introduce overloads for basic primitive types, as db itself is strongly typed. Same like for MySqlDataReader.GetUInt() leaving option for developer to cast manually MySqlDataReader["name"], that would also save useless casting to object and back (if its being re-resolved from passed object type).
[20 Apr 2018 6:16]
Chiranjeevi Battula
Hello Karl Krieger, Thank you for the bug report. Verified based on internal discussion with dev's. Thanks, Chiranjeevi.
[23 Nov 2021 16:16]
Daniel Valdez
Posted by developer: This is a C# compiler overload resolution issue hence it is not possible to fix in Connector/NET end. There are more overloads available to get to the desired result.