Skip to content

Commit b1c320d

Browse files
committed
Fixed null parameter handling
Default to STRING type for null parameters without explicit type Check member.DeclaringType instead of instance.Type to handle SqlQuery<string> scenarios where the instance type doesn't exactly match typeof(string)
1 parent ce23cc9 commit b1c320d

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

src/Ivy.Data.BigQuery/BigQueryParameter.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,8 +284,15 @@ internal Google.Cloud.BigQuery.V2.BigQueryParameter ToBigQueryParameter()
284284
{
285285
throw new InvalidOperationException($"Cannot automatically determine BigQuery array type for parameter '{ParameterName}'. Set the BigQueryDbType explicitly (e.g., BigQueryDbType.Array with element type).");
286286
}
287-
288-
throw new InvalidOperationException($"Cannot determine BigQueryDbType for parameter '{ParameterName}'. Set DbType or BigQueryDbType explicitly.");
287+
288+
if (Value == null || Value == DBNull.Value)
289+
{
290+
type = Google.Cloud.BigQuery.V2.BigQueryDbType.String;
291+
}
292+
else
293+
{
294+
throw new InvalidOperationException($"Cannot determine BigQueryDbType for parameter '{ParameterName}'. Set DbType or BigQueryDbType explicitly.");
295+
}
289296
}
290297

291298
var name = ParameterName[1..];

src/Ivy.EFCore.BigQuery/Query/Internal/BigQueryStringMemberTranslator.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ public class BigQueryStringMemberTranslator : IMemberTranslator
1313
{
1414
private readonly ISqlExpressionFactory _sqlExpressionFactory;
1515

16-
private static readonly MemberInfo StringLength
17-
= typeof(string).GetProperty(nameof(string.Length))!;
18-
1916
public BigQueryStringMemberTranslator(ISqlExpressionFactory sqlExpressionFactory)
2017
{
2118
_sqlExpressionFactory = sqlExpressionFactory;
@@ -27,7 +24,7 @@ public BigQueryStringMemberTranslator(ISqlExpressionFactory sqlExpressionFactory
2724
Type returnType,
2825
IDiagnosticsLogger<DbLoggerCategory.Query> logger)
2926
{
30-
if (member == StringLength && instance?.Type == typeof(string))
27+
if (member.Name == nameof(string.Length) && member.DeclaringType == typeof(string) && instance is not null)
3128
{
3229
return _sqlExpressionFactory.Function(
3330
"LENGTH",

0 commit comments

Comments
 (0)