Публикация

Как задать тип Join в пути при использовании ESQ

При задании колонки или фильтра в EntitySchemaQuery можно указать тип соединения который будет использоваться. По умолчанию LEFT OUTER JOIN

Пример:

var esq = new EntitySchemaQuery(EntitySchemaManager, "City");
esq.AddColumn("Country.Name");
esq.AddColumn("=Country.Name");
esq.AddColumn(">Country.);
var filter = esq.CreateFilterWithParameters(FilterComparisonType.Equal, ">Region.Name", "SomeRegion");
esq.Filters.Add(filter);

Получаем запрос(как пример для Oracle):

SELECT
  "Country"."Name" "Country.Name",
  "Country1"."Name" "Country1.Name",
  "Country2"."Name" "Country2.Name",
  "Contact"."Name" "Contact.Name"
FROM  "City"
  LEFT OUTER JOIN "Country" "Country" ON ("Country"."Id" = "City"."CountryId")
  INNER JOIN "Country" "Country1" ON ("Country1"."Id" = "City"."CountryId")
  LEFT OUTER JOIN "Country" "Country2" ON ("Country2"."Id" = "City"."CountryId")
    RIGTH OUTER JOIN "Contact" "Contact" ON ("Contact"."Id" = "Country2"."CreatedById")
  FULL OUTER JOIN "Region" "Region" ON ("Region"."Id" = "City"."RegionId")
WHERE
  "Region"."Name" = :P1

Полный список поддерживаемых типов соединений и их коды:

InnerJoinSpecSymbol = "=";
LeftJoinSpecSymbol = ">";
RightJoinSpecSymbol = "";
FullJoinSpecSymbol = ">";
CrossJoinSpecSymbol = "*";

Нравится

Поделиться

1 комментарий

подскажите с какой версии bpm это работает?

Показать все комментарии