Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit a97aef7

Browse files
committed
Prefer using original type over auto upcast in expressions
1 parent d2d14b5 commit a97aef7

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

src/ServiceStack.OrmLite/Expressions/SqlExpression.cs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -832,17 +832,27 @@ protected virtual object VisitMemberAccess(MemberExpression m)
832832
if (m.Expression != null
833833
&& (m.Expression.NodeType == ExpressionType.Parameter || m.Expression.NodeType == ExpressionType.Convert))
834834
{
835-
var propertyInfo = m.Member as PropertyInfo;
835+
var propertyInfo = (PropertyInfo)m.Member;
836+
837+
var modelType = propertyInfo.DeclaringType;
838+
if (m.Expression.NodeType == ExpressionType.Convert)
839+
{
840+
var unaryExpr = m.Expression as UnaryExpression;
841+
if (unaryExpr != null)
842+
{
843+
modelType = unaryExpr.Operand.Type;
844+
}
845+
}
836846

837847
if (propertyInfo.PropertyType.IsEnum)
838848
return new EnumMemberAccess(
839849
(PrefixFieldWithTableName
840-
? DialectProvider.GetQuotedTableName(propertyInfo.DeclaringType.GetModelDefinition().ModelName) + "."
850+
? DialectProvider.GetQuotedTableName(modelType.GetModelDefinition().ModelName) + "."
841851
: "")
842852
+ GetQuotedColumnName(m.Member.Name), propertyInfo.PropertyType);
843853

844-
return new PartialSqlString((PrefixFieldWithTableName
845-
? DialectProvider.GetQuotedTableName(propertyInfo.DeclaringType.GetModelDefinition().ModelName) + "."
854+
return new PartialSqlString((PrefixFieldWithTableName
855+
? DialectProvider.GetQuotedTableName(modelType.GetModelDefinition().ModelName) + "."
846856
: "")
847857
+ GetQuotedColumnName(m.Member.Name));
848858
}

0 commit comments

Comments
 (0)