Hello,
Pls could you advice? I have linq query below nad t-sql query generated by EF caught with SQL profiler. Could you advise how to rewrite Linq query. Because it takes unbelievably long time to get this data. And In generated SQL query it firstly gets all data and filters them in second step. How to manage it to use where sooner.
Thx
public IList
{
var query = _delfinEntities.ForAposteriori.Where(o => o.spr_CalyNumerSprawy == "SCS/3/307").Select(o => new ScsDebtor()
{
AdrAdres = o.adr_Adres,
AdrKodPocztowy = o.adr_KodPocztowy,
AdrMiasto = o.adr_Miasto,
DlzPesel = o.dlz_PESEL,
KntAdres = o.knt_Adres,
});
return query.ToList();
}
SELECT TOP (1)
1 AS [C1],
[Extent1].[adr_Adres] AS [adr_Adres],
[Extent1].[adr_KodPocztowy] AS [adr_KodPocztowy],
[Extent1].[adr_Miasto] AS [adr_Miasto],
[Extent1].[dlz_PESEL] AS [dlz_PESEL]
FROM
(SELECT
[ForAposteriori].[knt_Adres] AS [knt_Adres],
[ForAposteriori].[knt_Miasto] AS [knt_Miasto],
[ForAposteriori].[knt_KodPocztowy] AS [knt_KodPocztowy],
[ForAposteriori].[dlz_PESEL] AS [dlz_PESEL]
FROM [dbo].[ForAposteriori] AS [ForAposteriori]) AS [Extent1]
WHERE N'XXXX' = [Extent1].[spr_CalyNumerSprawy]
Jignesh TrivediPosted May 29, 2013, 11:02 PM
it might be.
Equvalent Query is also depend which EF version are you using.
And also you can also use pure linq query with from clause.
var query = from o in _delfinEntities.ForAposteriori
where o.spr_CalyNumerSprawy == "SCS/3/307"
select new ScsDebtor()
{
AdrAdres = o.adr_Adres,
AdrKodPocztowy = o.adr_KodPocztowy,
AdrMiasto = o.adr_Miasto,
DlzPesel = o.dlz_PESEL,
KntAdres = o.knt_Adres,
};
hope this will help you.
Radim MotyckaPosted May 29, 2013, 1:14 PM