Desidero ridurre il tempo di avvio in EF6 inserendo nella cache DbCompiledModel sul disco.Codice EF6 prima: come caricare DbCompiledModel dal file EDMX all'avvio?
E 'facile scrivere il file EDMX per un DbContext:
EdmxWriter.WriteEdmx(myDbContext, XmlWriter.Create(@"C:\temp\blah.xml"))
Ed è facile passare un DbCompiledModel alla DbContext:
var db = new DbContext(connectionString, myDbCompiledModel)
Tuttavia non sembra essere un modo leggere il file EDMX dal disco in un DbCompiledModel! Come posso fare questo?
NOTA che ho implementato con successo la soluzione utilizzando lo strumento EdmxReader in questa ramificata versione di EF6:
https://github.com/davidroth/entityframework/tree/DbModelStore
tuttavia sono riluttanti a utilizzare una versione di ramo in un ambiente di produzione. Ho provato a estrarre l'utility EdmxReader da questo ramo, ma si basa su un costruttore interno di DbCompiledModel a cui non posso accedere.
Quindi, come posso ottenere il file EDMX dal disco e convertirlo in un DbCompiledModel?
Brendan, Mikael è stato così gentile da testare l'idea che ti ho mandato via email dopo averlo condiviso con lui. Facci sapere se questo fa il trucco! –
Mikael, grazie per aver risposto a questa domanda. Ho provato a serializzare DbCompiledModel usando BinaryFormatter e JSON.Net con varie impostazioni, ma ho riscontrato problemi auto-referenziali e non [Serializable]. Ho iniziato una domanda separata con i dettagli qui. Puoi far luce e sei riuscito a serializzare? http://stackoverflow.com/questions/32109897/how-can-i-serialize-a-dbcompiledmodel-from-ef6 –