При задании колонки или фильтра в 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);
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
"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 = "*";
LeftJoinSpecSymbol = ">";
RightJoinSpecSymbol = "";
FullJoinSpecSymbol = ">";
CrossJoinSpecSymbol = "*";
13 сентября 2018 14:22
подскажите с какой версии bpm это работает?
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать