Hi,
I have another problem yet.
I would like to use left join in my query as below
var q = (from ua in metaData.Useraccount
join inner in
(from ugr in metaData.Usergrouprel
join ug in metaData.Usergroup on ugr.Idusergroup equals ug.Idusergroup into joinQi
from QiJoined in joinQi.DefaultIfEmpty()
select ugr) on ua.Iduseraccount equals inner.Iduseraccount into joinQ
from QJoined in joinQ.DefaultIfEmpty()
select ua);
IQueryable<UseraccountEntity> query = q
.WithPath<UseraccountEntity>(uaPath => uaPath.Prefetch<UsergrouprelEntity>(ua => ua.Usergrouprel)
.SubPath<UsergrouprelEntity>(ugrPath => ugrPath.Prefetch<UsergroupEntity>(ugr => ugr.Usergroup)));
List<UseraccountEntity> ualist = query.ToList<UseraccountEntity>();
I used in query joins because I need to add conditions. And left joins are important for me too.
Linq query produce sql queries as below
SELECT "TEST_1"."USERGROUPREL"."IDUSERGROUPREL" AS "Idusergrouprel",
"TEST_1"."USERGROUPREL"."IDUSERACCOUNT" AS "Iduseraccount",
"TEST_1"."USERGROUPREL"."IDUSERGROUP" AS "Idusergroup"
FROM ("TEST_1"."USERGROUPREL" "LPA_L3" LEFT JOIN "TEST_1"."USERGROUP"
"LPA_L4" ON "LPA_L3"."IDUSERGROUP" = "LPA_L4"."IDUSERGROUP")
SELECT DISTINCT "LPA_L2"."IDUSERACCOUNT" AS "Iduseraccount",
"LPA_L2"."MAIL" AS "Mail",
"LPA_L2"."CACHEDPASS" AS "Cachedpass",
"LPA_L2"."LOGINDATE" AS "Logindate",
"LPA_L2"."CREATEDBY" AS "Createdby",
"LPA_L2"."CREATEDDATE" AS "Createddate",
"LPA_L2"."MODIFIEDBY" AS "Modifiedby",
"LPA_L2"."MODIFIEDDATE" AS "Modifieddate",
"LPA_L2"."DELETEDBY" AS "Deletedby",
"LPA_L2"."DELETEDDATE" AS "Deleteddate",
"LPA_L2"."FULLNAME" AS "Fullname",
"LPA_L2"."PHONE" AS "Phone",
"LPA_L2"."POSTALCODE" AS "Postalcode",
"LPA_L2"."PAGER" AS "Pager",
"LPA_L2"."CITY" AS "City",
"LPA_L2"."FIRSTNAME" AS "Firstname",
"LPA_L2"."COUNTRY" AS "Country",
"LPA_L2"."SURNAME" AS "Surname",
"LPA_L2"."FAX" AS "Fax",
"LPA_L2"."MOBILE" AS "Mobile",
"LPA_L2"."STREET" AS "Street"
FROM ((SELECT "TEST_1"."USERGROUPREL"."IDUSERGROUPREL" AS "Idusergrouprel",
"TEST_1"."USERGROUPREL"."IDUSERACCOUNT" AS "Iduseraccount",
"TEST_1"."USERGROUPREL"."IDUSERGROUP" AS "Idusergroup"
FROM ("TEST_1"."USERGROUPREL" "LPA_L3" LEFT JOIN
"TEST_1"."USERGROUP" "LPA_L4" ON
"LPA_L3"."IDUSERGROUP" = "LPA_L4"."IDUSERGROUP")) "LPA_L1"
RIGHT JOIN "TEST_1"."USERACCOUNT" "LPA_L2" ON
"LPA_L2"."IDUSERACCOUNT" = "LPA_L1"."Iduseraccount")
There is problem with aliases. They should be used instad of full table name.
One left outer join in query works ok, two doesn't work. Inner joins work fine.
lib's version 2.6.0.0.12112008
Thanks in advance