#c# #join #ormlite-servicestack #mysql.data
#c# #Присоединиться #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 { get; set; }
public DateTime? Deleted { get; set; }
public bool IsDeleted { get; set; }
}
Допустим, у меня есть 2 сущности, UserEntity и AnswerEntity, которые наследуются от этого базового класса.
При использовании JoinSqlBuilder в версии 4.0.19 я мог бы объединить их, используя что-то вроде этого:
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: неизвестный столбец ‘BaseEntity.IsDeleted’ в предложении where’ в MySQL.Data.MySqlClient.MySqlStream.ReadPacket() в MySQL.Data.MySqlClient.NativeDriver.GetResult(Int32amp; affectedRow, Int64amp; insertedId)…
Используя новую поддержку join, я получаю ту же ошибку:
expression.Join<AnswerEntity, UserEntity>((l, r) => l.UserId == r.Id);
expression.Where<AnswerEntity>(x => x.IsDeleted == false);
Ответ №1:
Теперь должно быть разрешено в этом коммите, доступном с версии 4.0.23 ServiceStack, который в настоящее время доступен в MyGet. Если у вас установлены существующие пакеты версии 4.0.23 из MyGet, их необходимо сначала удалить, чтобы можно было удалить обновленные пакеты.