ormlite-servicestack,mysql.data,C#,Join,ormlite Servicestack,Mysql.data" /> ormlite-servicestack,mysql.data,C#,Join,ormlite Servicestack,Mysql.data" />

C# ServiceStack Ormlite-子类上的联接

C# ServiceStack Ormlite-子类上的联接,c#,join,ormlite-servicestack,mysql.data,C#,Join,ormlite Servicestack,Mysql.data,我正在使用最新的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 {

我正在使用最新的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; }
}
假设我有两个实体,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);
var joinBuilder=new JoinSqlBuilder();
joinBuilder=joinBuilder.Join(
l=>l.UserId,
r=>r.Id,
x=>new{x.Id,x.AnswerValue,x.QuestionId,x.Created,x.Updated,x.Deleted},
无效的
lx=>lx.IsDeleted==false,
rx=>rx.IsDeleted==false);
更新后,我得到一个错误:

MySql.Data.MySqlClient.MySqlException:未知列'BaseEntity.IsDeleted' 在“where子句”中 MySql.Data.MySqlClient.MySqlStream.ReadPacket()位于 MySql.Data.MySqlClient.NativeDriver.GetResult(Int32&affectedRow, Int64&插入器)

使用新的联接支持,我得到了相同的错误:

expression.Join<AnswerEntity, UserEntity>((l, r) => l.UserId == r.Id);
expression.Where<AnswerEntity>(x => x.IsDeleted == false);
expression.Join((l,r)=>l.UserId==r.Id);
表达式,其中(x=>x.IsDeleted==false);
现在应该在ServiceStack的v4.0.23+中解析,该版本是。如果已安装MyGet中的现有v4.0.23软件包,则需要先卸载该软件包,才能下载更新后的软件包