I have ~300 DbSets in my context and the first query after app load (a FirstOrDefault() where on an indexed field) takes ~40 seconds.
To improve this, I am attempting to use pregenerated views in EF 4.3.1 Code First using the T4 template here:
I compile it in, but I see no performance difference. I was hoping/assuming it would help the painful slow startup I am experiencing, but no luck.
Should it help? If not, what exactly are pregenerated views used for? And, is there anything I can do to improve startup time? Splitting my context up is painful to say the least.
It turns out that it actually seems to search for the pregenerated views in the assembly where the first referenced entity is, not in the assembly where the DbContext is. See more discussion here: http://blog.3d-logic.com/2012/06/13/entity-framework-codefirst-view-generation-templates-on-visual-studio-code-gallery/#comment-76.
To work around this, I made up a new entity and put it in the context’s assembly, and listed it as the first DbSet. Now it picks it up, and works well (except that this is ridiculous).