0

我正在使用最新的 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);
4

1 回答 1

1

现在应该在MyGet 上当前可用的 ServiceStack v4.0.23+提供的这个提交中解决。如果您安装了来自 MyGet 的现有v4.0.23软件包,则需要先将其卸载才能下载更新的软件包。

于 2014-06-26T18:01:04.637 回答