При соединении таблицы с самим собой сгенерированный SQL-стат не ссылается на таблицы правильно.
Работает, когда «главная» таблица отличается от объединяемой таблицы https://github.com/ServiceStack/ServiceStack.OrmLite#join-aliases
Класс
public class Page
{
public string ActivityId { get; set; }
public int DefinitionId { get; set; }
public int PageId { get; set; }
}
Код
using (var db = connection.Open())
{
var sql = db.From<Page>()
.Join<Page>((p1, p2) =>
p1.DefinitionId == 349 &&
p1.ActivityId == "a633326227969545457" &&
p1.PageId == p2.PageId &&
p2.DefinitionId == 340, db.JoinAlias("p2"))
.Select<Page>(p => new {
String = Sql.JoinAlias(p.ActivityId, "p2")
});
}
оператор SQL
p1 .DefinitionId == 349 и p1 .ActivityId == "a633326227969545457 ", это не должно относиться к p2
SELECT p2."ActivityId" AS String
FROM "Page" INNER JOIN "Page" p2 ON (
((("p2"."DefinitionId" = 349)
AND ("p2"."ActivityId" = 'a633326227969545457'))
AND ("p2"."PageId" = "p2"."PageId"))
AND ("p2"."DefinitionId" = 340))
Это ошибка или я что-то здесь упускаю?