LINQ queries to generate a report on accrued work time on projects
I've thought about a factory method, but that won't work because it
  can't be translated to SQL by the expression interpreter.


Why don't you call (as suggested by t3chb0t) AsEnumerable() right before your factory method? You would perform the factory method in memory.

 var project = entities.Tickets
        .Where(p =&gt; p.ID == id)
        .AsEnumerable()   // &lt;-- loads the tickets into memory
        .Select(p =&gt; myFactoryMethod(p))
        .Single();