Avatar billede smudger Novice
14. august 2014 - 23:32 Der er 2 kommentarer

EF6

Hej,

Jeg bruger EF6 og LINQ til at hente data fra min lokale sql db.

IEnumerable<TransactionEntry> es = ctx.TransactionEntries.Include(e => e.Transaction).Where(e => e.ColonyId == colonyId && e.AccountId == accountId);
es = es.Where(e => e.Transaction.Date <= DateTime.Today);
es.Sum(e => e.Amount);

Dette bliver konverteret til denne forkerte sql saetning:

SELECT
    ...
    FROM  [dbo].[TransactionEntries] AS [Extent1]
    INNER JOIN [dbo].[Transactions] AS [Extent2] ON [Extent1].[TransactionId] = [Extent2].[Id]
    WHERE ([Extent1].[ColonyId] = @p__linq__0) AND ([Extent1].[AccountId] = @p__linq__1)

Hvor bliver transaction.date filtret af? Hvis jeg omskriver c# til dette, saa virker det?

IEnumerable<TransactionEntry> es = ctx.TransactionEntries.Include(e => e.Transaction).Where(e => e.ColonyId == colonyId && e.AccountId == accountId).Where(e => e.Transaction.Date <= DateTime.Today);
es.Sum(e => e.Amount);

SELECT
    ...
    FROM  [dbo].[TransactionEntries] AS [Extent1]
    INNER JOIN [dbo].[Transactions] AS [Extent2] ON [Extent1].[TransactionId] = [Extent2].[Id]
    WHERE ([Extent1].[ColonyId] = @p__linq__0) AND ([Extent1].[AccountId] = @p__linq__1) AND ([Extent2].[Date] <= @p__linq__2)

Er dette en fejl I EF6, eller goer jeg noget forkert?
Avatar billede arne_v Ekspert
15. august 2014 - 00:02 #1
Men giver den foerste alligevel ikke det rigtige resultat?

Jeg formoder at den henter raekkerne og saa selekterer i memory udfra dato.
Avatar billede softspot Forsker
15. august 2014 - 08:41 #2
Jeg er slet ikke sikker på dette, men ændrer det noget, hvis du udskifter typeerklæringen af es fra IEnumerable<TransactionEntry> til IQueryable<TransactionEntry> (eller bare en var)?

Umiddelbart burde es ikke blive evalueret inden du kalder Sum (bliver den i øvrigt tildelt noget, eller smider du bare resultatet væk?), men min (lille) erfaring med EF stammer mest fra EF5, så om der er sket en ændring på denne del fra EF5 til EF6 aner jeg ikke...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester