我正在使用最新的 ServiceStack Ormlite (v4.0.23),它为加入多个列提供了新的加入支持。
我的实体都继承自 BaseEntity:
public class BaseEntity : IBaseEntity
{
[AutoIncrement]
[PrimaryKey]
public long Id { get; set; }
public DateTime Created { get; set; }
public DateTime Updated { get; set; }
public DateTime? Deleted { get; set; }
public bool IsDeleted { get; set; }
}
假设我有 2 个实体,UserEntity 和 AnswerEntity,它们继承自这个基类。在 v4.0.19 中使用 JoinSqlBuilder 时,我可以使用以下方式加入这些:
var joinBuilder = new JoinSqlBuilder<AnswerEntity, UserEntity>();
joinBuilder = joinBuilder.Join<AnswerEntity, UserEntity>(
l => l.UserId,
r => r.Id,
x => new { x.Id, x.AnswerValue, x.QuestionId, x.Created, x.Updated, x.Deleted, x.IsDeleted },
null,
lx => lx.IsDeleted == false,
rx => rx.IsDeleted == false);
更新后,我收到错误:
MySql.Data.MySqlClient.MySqlException :MySql.Data.MySqlClient.MySqlStream.ReadPacket() 的 MySql.Data.MySqlClient.NativeDriver.GetResult 的“where 子句”中的未知列“BaseEntity.IsDeleted”(Int32 和受影响的行,Int64 和插入的 ID)。 ..
使用新的加入支持,我得到同样的错误:
expression.Join<AnswerEntity, UserEntity>((l, r) => l.UserId == r.Id);
expression.Where<AnswerEntity>(x => x.IsDeleted == false);