View Single Post
nso
popålol
nso's Avatar
Administrator
Det er ikke ofte jeg spør om ting på dette underforumet, men jeg vet det er et par racere som gjemmer seg i krokene så vi kjører på.

Det luktet litt svidd på live, så jeg fyrte opp en profiler og fikk meg en liten bakoversveis. Det er alltid gøy når antagelser man har gjort om hvordan verktøy man bruker fungerer ikke viser seg å holde vann.

Kort fortalt så sliter jeg med at EF genererer 1+(N-children) antall spørringer når jeg spør etter data til lenkede tabeller.

Kode

// Generates 1 SQL query against Foo with an inner join with FooBar
await db.Foo
  .Where(foo => 
    foo.FooId == fooId
    && !foo.IsDeleted)
  .Select(foo => new
    {
      FooBarList = foo.FooBars.ToList()
    })
  .ToListAsync();

// Generates 1 (+ number of FooBars) SQL queries, no inner join
await db.Foo
  .Where(foo => 
    foo.FooId == fooId
    && !foo.IsDeleted)
  .Select(foo => new
    {
      FooBarList = foo.FooBars
        .Where(fooBar => 
          fooBar.FooId = foo.FooId
          && !fooBar.IsDeleted)
        .ToList()
    })
  .ToListAsync();
Det hadde vært skikkelig gøy å kunne holde spørringantallet rundt 1 istedetfor rundt noen tusen. Jeg tipper jeg joiner på feil måte, fordi det føles som om jeg prøver å gjøre noe jævla basic men resultatet er helt på trynet.

Anyways, gi meg en lyd hvis noen har noen innspill til hvordan jeg kan løse dette.