Allow SFDataConverter to convert from AnsiString to TEXT #1106
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The following error is observed when trying to insert or update a TEXT column with a DbParameter of type AnsiString whose value is DBNull. "No corresponding Snowflake type for type AnsiString."
To reproduce this with the Dapper ORM library, set Dapper to use DbType.AnsiString for .NET strings with this "SqlMapper.AddTypeMap(typeof(string), System.Data.DbType.AnsiString);". Try to insert or update a TEXT column with a null value for a string and the exception will be thrown. Alternatively, without Dapper, create a SnowflakeDbParameter and set the DbType to AnsiString and the Value to DBNull.Value.
Using AnsiString with an actual value works because the DbType property in SnowflakeDbParameter knows there is a value, calls GetType(), which returns System.String, and then uses the TypeToDbTypeMap which maps to DbType.String.
When the value is DBNull the DbType property checks for DBNull and simply returns DbType.AnsiString. CSharpTypeValToSfTypeVal() then throws the exception due to the AnsiString type not being in the switch statement.