Mam problem z zapytaniem, które nie działa w .Net5 Nie jestem pewien, dlaczego zapytanie, które działa dobrze w Entity Framework 6, nie otrzymuje listy standardów w .Net5. Co mogę zmienić żeby zoptymalizować zapytanie?
var listModel =
(
from dane in _dbContext.Standard
join kraj in _dbContext.CountryStandard
on dane.IdCountryStandard equals kraj.IdCountryStandard
join opcja in _dbContext.MeasureDiameterOption
on dane.IdStandard equals opcja.IdStandard
join metoda in _dbContext.MeasureDiameterMethod
on opcja.IdMeasureDiameterMethod equals metoda.IdMeasureDiameterMethod
join sposob in _dbContext.WalkingLineRadius
on opcja.IdWalkingLineRadius equals sposob.IdWalkingLineRadius
select new StandardEnt()
{
IdStandard = dane.IdStandard,
IdCountryStandard = dane.IdCountryStandard,
StandardName = dane.StandardName,
IsActive = dane.IsActive,
NameCountry = kraj.NameCountryStandard,
FreeHeadSpace = (double)dane.FreeHeadSpace,
IsTlcStandard = dane.IsTlcStandard,
MinLandingSize = (double)dane.MinLandingSize,
MinStepHeight = (double)dane.MinStepHeight,
MaxStepHeight = (double)dane.MaxStepHeight,
MinConvinience = (double)dane.MinConvinience,
MaxConvinience = (double)dane.MaxConvinience,
MaxStepDeep = (double)dane.MaxStepDeep,
MinStepDeep = (double)dane.MinStepDeep,
MaxStepWidth = (double)dane.MaxStepWidth,
WidthLimit = (double)dane.WidthLimit,
StartOverlap = (double)dane.StartOverlap,
InternalHandrailMaxRadius = (double)dane.InternalHandrailMaxRadius,
PrimaryCalcMethod = (from metody in _dbContext.MeasureDiameterOption
select new MeasureDiameterMethodEnt()
{
IdStandard = metody.IdStandard,
IdMeasureDiameterOption = metody.IdMeasureDiameterOption,
Description = metody.Description,
IdMeasureDiameterMethod = metody.IdMeasureDiameterMethod,
IdWalkingLineRadius = metody.IdWalkingLineRadius,
IdCalcMethodType = metody.WalkingLineRadius.CalcMethodType.IdCalcMethodType,
IdWalkingLineMeasure = metody.WalkingLineRadius.WalkingLineMeasure.IdWalkingLineMeasure,
//CalcMethod = Enum.Parse<DiamDivide>(opcja.WalkingLineRadius.CalcMethodType.CalcMethodNameType),
//WalkingLineMeasure = Enum.Parse<WalkingLineMeasureMethod>(opcja.WalkingLineRadius.WalkingLineMeasure.WalkingLineMeasureName),
CalcMethodName = metody.MeasureDiameterMethod.CalcMethodName,
CalcMethodNameType = metody.WalkingLineRadius.CalcMethodType.CalcMethodNameType,
WalkingLineMeasureName = metody.WalkingLineRadius.WalkingLineMeasure.WalkingLineMeasureName,
FirstWidth = (double)metody.WalkingLineRadius.FirstWidth,
SecondWidth = (double)metody.WalkingLineRadius.SecondWidth
}).Where(s => s.CalcMethodName == "PrimaryCalcMethod" && s.IdStandard == dane.IdStandard).FirstOrDefault(),
SecondaryCalcMethod = (from metody in _dbContext.MeasureDiameterOption
select new MeasureDiameterMethodEnt()
{
IdStandard = metody.IdStandard,
IdMeasureDiameterOption = metody.IdMeasureDiameterOption,
Description = metody.Description,
IdMeasureDiameterMethod = metody.IdMeasureDiameterMethod,
IdWalkingLineRadius = metody.IdWalkingLineRadius,
IdCalcMethodType = metody.WalkingLineRadius.CalcMethodType.IdCalcMethodType,
IdWalkingLineMeasure = metody.WalkingLineRadius.WalkingLineMeasure.IdWalkingLineMeasure,
//CalcMethod = Enum.Parse<DiamDivide>(opcja.WalkingLineRadius.CalcMethodType.CalcMethodNameType),
//WalkingLineMeasure = Enum.Parse<WalkingLineMeasureMethod>(opcja.WalkingLineRadius.WalkingLineMeasure.WalkingLineMeasureName),
CalcMethodName = metody.MeasureDiameterMethod.CalcMethodName,
CalcMethodNameType = metody.WalkingLineRadius.CalcMethodType.CalcMethodNameType,
WalkingLineMeasureName = metody.WalkingLineRadius.WalkingLineMeasure.WalkingLineMeasureName,
FirstWidth = (double)metody.WalkingLineRadius.FirstWidth,
SecondWidth = (double)metody.WalkingLineRadius.SecondWidth
}).Where(s => s.CalcMethodName == "SecondaryCalcMethod" && s.IdStandard == dane.IdStandard).FirstOrDefault()
}
).GroupBy(x => x.IdStandard).Select(x => x.FirstOrDefault()).ToList();
return listModel;
jeśli dołożę .AsEnumerable(). to działa ale ładuje kolekcję do pamięci
.AsEnumerable().GroupBy(x => x.IdStandard).Select(x => x.FirstOrDefault()).ToList();