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

Commit d0a75e0

Browse files
committed
Use the type from the expression over the declaring class of the property
1 parent 0ea667d commit d0a75e0

File tree

2 files changed

+55
-1
lines changed

2 files changed

+55
-1
lines changed

src/ServiceStack.OrmLite/Expressions/SqlExpression.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -859,7 +859,7 @@ protected virtual object VisitMemberAccess(MemberExpression m)
859859
{
860860
var propertyInfo = (PropertyInfo)m.Member;
861861

862-
var modelType = propertyInfo.DeclaringType;
862+
var modelType = m.Expression.Type;
863863
if (m.Expression.NodeType == ExpressionType.Convert)
864864
{
865865
var unaryExpr = m.Expression as UnaryExpression;

tests/ServiceStack.OrmLite.Tests/OrmLiteCreateTableTests.cs

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,5 +305,59 @@ public void Can_create_table_ModelWithIndexer()
305305
}
306306
}
307307

308+
public interface IBaseEntity
309+
{
310+
long Id { get; set; }
311+
DateTime Created { get; set; }
312+
DateTime Updated { get; set; }
313+
DateTime? Deleted { get; set; }
314+
bool IsDeleted { get; set; }
315+
}
316+
317+
public class BaseEntity : IBaseEntity
318+
{
319+
[AutoIncrement]
320+
[PrimaryKey]
321+
public long Id { get; set; }
322+
323+
public DateTime Created { get; set; }
324+
325+
public DateTime Updated { get; set; }
326+
327+
public DateTime? Deleted { get; set; }
328+
329+
public bool IsDeleted { get; set; }
330+
}
331+
332+
public class UserEntity : BaseEntity
333+
{
334+
}
335+
336+
public class AnswerEntity : BaseEntity
337+
{
338+
public long UserId { get; set; }
339+
}
340+
341+
[Test]
342+
public void Can_create_and_join_on_Tables_with_Base_classes()
343+
{
344+
using (var db = OpenDbConnection())
345+
{
346+
db.DropAndCreateTable<UserEntity>();
347+
db.DropAndCreateTable<AnswerEntity>();
348+
349+
db.Insert(new AnswerEntity { UserId = 1, Created = DateTime.UtcNow });
350+
db.Insert(new UserEntity { Id = 1, Created = DateTime.UtcNow });
351+
352+
var q = db.From<AnswerEntity>();
353+
q.Join<AnswerEntity, UserEntity>((l, r) => l.UserId == r.Id);
354+
q.Where<AnswerEntity>(x => x.IsDeleted == false);
355+
356+
var results = db.Select(q);
357+
results.PrintDump();
358+
359+
Assert.That(results.Count, Is.EqualTo(1));
360+
}
361+
}
308362
}
309363
}

0 commit comments

Comments
 (0)