We have a .Net Core 3.1 WEB API that uses Entity Framework 3.1.3
When we build a LINQ query like the following:
Code: Select all
DateTime checkDate = new DateTime(2015, 5, 1);
var result = from model in carsContext.Models
join v3 in carsContext.ModelVersions.Where(
v => checkDate >= v.STARTDATE && (checkDate < v.ENDDATE || v.ENDDATE == null))
on model.ID equals v3.MODEL_ID into v2
from v in (v2.DefaultIfEmpty())
select new ModelVersionDto()
{
modelName = model.DESCRIPTION,
ModelVersion = v.DESCRIPTION
};
return result;
Code: Select all
SELECT "m".DESCRIPTION "modelName", "t".DESCRIPTION "ModelVersion"
FROM MODELS "m"
LEFT JOIN (
SELECT "m0".ID, "m0".DESCRIPTION, "m0".ENDDATE, "m0".MODEL_ID, "m0".STARTDATE
FROM MODELVERSIONS "m0"
WHERE (:p__checkDate_0 >= "m0".STARTDATE) AND ((:p__checkDate_1 < "m0".ENDDATE) OR "m0".ENDDATE IS NULL)
) "t" ON "m".ID = "t".MODEL_ID
However, when upgrading package Devart.Data.Oracle.EFCore to 9.11.951 or 9.11.980, running the same query will result in the following Oracle query:
Code: Select all
SELECT "m".DESCRIPTION "modelName", "t".DESCRIPTION "ModelVersion"
FROM MODELS "m"
LEFT JOIN (
SELECT "m0".ID, "m0".DESCRIPTION, "m0".ENDDATE, "m0".MODEL_ID, "m0".STARTDATE
FROM MODELVERSIONS "m0"
WHERE ("m0".STARTDATE >= :p__checkDate_0) AND (("m0".ENDDATE < :p__checkDate_1) OR "m0".ENDDATE IS NULL)
) "t" ON "m".ID = "t".MODEL_ID