sql >> Database teknologi >  >> RDS >> Mysql

ASP MVC MsSql til MySQL migration

Er du sikker på, at din anden forespørgsel virkelig er OK?

1) Id =d.Id, <=Hvorfor dette komma (ikke rigtig vigtigt)? ('ID =' er redundant)

2) .Where(m => m.Trash ==false) <='Trash' er ikke i valget, så denne egenskab er ikke kendt på nuværende tidspunkt

3) .OrderByDescending(f => f.Created) <=idem for 'Created'

4) Hvorfor et komma efter .ToList()?

Jeg har forenklet din DDL (som ikke er en MWE) med genererede data. Jeg har gengivet dit problem i VS2013.

Jeg har også testet din forespørgsel med LINQPad direkte mod databasen, og jeg har det samme problem med den tredje test, sandsynligvis en fejl i driveren mysql:

trdposts.Select(a => new {
    Created = a.Created,
    Body = a.Body,
    Comments = a.Posttrdcomments
                .Select(d => new { Body = d.body, Id = d.Id, d.Created, d.Trash})
                .Where(m => m.Trash == 1)
                .OrderByDescending(f => f.Created)
                .Skip(33)
                .Take(10)
                .ToList()
    })

Giv en kortere SQL-forespørgsel:

SELECT t1.PostId, t1.body, t1.Id, t1.Created, t1.Trash
FROM trdposts AS t0
    OUTER APPLY (
      SELECT t2.body, t2.Created, t2.Id, t2.PostId, t2.Trash
      FROM trdcomments AS t2
      WHERE ((t2.PostId = t0.Id) AND (t2.Trash = 1))
      ORDER BY t2.Created DESC
  ) AS t1
ORDER BY t1.Created DESC

Uden .Skip() og .Take() får vi gode 'LEFT OUTER JOIN'



  1. Mysql:Find poster fra en bestemt dag ved hjælp af tidsstempelkolonnen

  2. MySQL opdaterer en sammenføjet tabel

  3. 5 meget almindelige SQL-forespørgselsdesignfejl, der skal undgås for enhver pris

  4. Sådan opretter du forbindelse til MySQL ved hjælp af Microsoft .NET