Skip to content

Commit 776a927

Browse files
committed
Correção do erro Implementation limit exceeded
Correção da falha SQL error code = -204 Implementation limit exceeded block size exceeds implementation restriction
1 parent 751080c commit 776a927

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

src/FirebirdSql.EntityFrameworkCore.Firebird/Query/Internal/FbQuerySqlGenerator.cs

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,18 @@ protected override Expression VisitSqlParameter(SqlParameterExpression sqlParame
169169
Sql.Append(" AS ");
170170
if (sqlParameterExpression.Type == typeof(string))
171171
{
172-
var isUnicode = FbTypeMappingSource.IsUnicode(sqlParameterExpression.TypeMapping);
173-
Sql.Append(((IFbSqlGenerationHelper)Dependencies.SqlGenerationHelper).StringParameterQueryType(isUnicode));
172+
var storeTypeNameBase = sqlParameterExpression.TypeMapping.StoreTypeNameBase;
173+
var size = sqlParameterExpression.TypeMapping.Size;
174+
175+
if (storeTypeNameBase != null && size != null)
176+
{
177+
Sql.Append($"{storeTypeNameBase}({size})");
178+
}
179+
else
180+
{
181+
var isUnicode = FbTypeMappingSource.IsUnicode(sqlParameterExpression.TypeMapping);
182+
Sql.Append(((IFbSqlGenerationHelper)Dependencies.SqlGenerationHelper).StringParameterQueryType(isUnicode));
183+
}
174184
}
175185
else
176186
{
@@ -191,9 +201,19 @@ protected override Expression VisitSqlConstant(SqlConstantExpression sqlConstant
191201
base.VisitSqlConstant(sqlConstantExpression);
192202
if (shouldExplicitStringLiteralTypes)
193203
{
194-
var isUnicode = FbTypeMappingSource.IsUnicode(sqlConstantExpression.TypeMapping);
195-
Sql.Append(" AS ");
196-
Sql.Append(((IFbSqlGenerationHelper)Dependencies.SqlGenerationHelper).StringLiteralQueryType(sqlConstantExpression.Value as string, isUnicode));
204+
var storeTypeNameBase = sqlConstantExpression.TypeMapping.StoreTypeNameBase;
205+
var size = sqlConstantExpression.TypeMapping.Size;
206+
207+
if (storeTypeNameBase != null && size != null)
208+
{
209+
Sql.Append($"{storeTypeNameBase}({size})");
210+
}
211+
else
212+
{
213+
var isUnicode = FbTypeMappingSource.IsUnicode(sqlConstantExpression.TypeMapping);
214+
Sql.Append(" AS ");
215+
Sql.Append(((IFbSqlGenerationHelper)Dependencies.SqlGenerationHelper).StringLiteralQueryType(sqlConstantExpression.Value as string, isUnicode));
216+
}
197217
Sql.Append(")");
198218
}
199219
return sqlConstantExpression;

0 commit comments

Comments
 (0)