You use Table-per-type => EF must generate these joins because it does not know what type your object is actually. If your entry from Base has a corresponding entry in the DerivedA table IT MUST NOT create an instance of the Base object for this record - IT MUST create an instance of DerivedA , and it needs to create connections to obtain this knowledge.
This is a long discussion of why this is not allowed, but just an object from the object world is an atomic data structure that can be stored in several tables, but invisible to the world object. If you save Base , you load Base back, but if you save DerivedA , you will always load DerivedA back and never just Base , because that will break the atomicity of the object.
I have not tried it, but I assume that the ESQL OFTYPE ONLY should also perform joins to make sure that it really loads real instances of the underlying object instead of corrupted instances of the derived objects.
A table for each type produces slow queries..NET 4.5 should improve it, but I think that the improvements will not be targeted at these cases - I think that they will be targeted at OfType for derived types and forecasts.
If you only need data from the Base table, your best options are:
source share