Я хочу уменьшить время запуска в EF6, кэшируя DbCompiledModel на диск.EF6 code first: Как загрузить DbCompiledModel из файла EDMX при запуске?
Легко написать файл EDMX для DbContext:
EdmxWriter.WriteEdmx(myDbContext, XmlWriter.Create(@"C:\temp\blah.xml"))
И это легко пройти DbCompiledModel к DbContext:
var db = new DbContext(connectionString, myDbCompiledModel)
Однако там, кажется, не будет каким-либо образом прочитать файл EDMX с диска в DbCompiledModel! Как я могу это сделать?
ВНИМАНИЕ, что я успешно реализовали решение, используя инструмент EdmxReader в этой разветвленной версии EF6:
https://github.com/davidroth/entityframework/tree/DbModelStore
Однако я не хотел бы использовать версию филиал в производственной среде. Я попытался извлечь утилиту EdmxReader из этой ветви, но он полагается на внутренний конструктор DbCompiledModel, к которому я не могу получить доступ.
Итак, как я могу получить файл EDMX с диска и преобразовать его в DbCompiledModel?
Брендана, Микаэль был достаточно любезен, чтобы проверить идею, которую я отправил вам по электронной почте после того, как я поделился ею с ним. Сообщите нам, если это трюк! –
Mikael, спасибо, что ответили на этот вопрос. Я попробовал сериализацию DbCompiledModel с использованием BinaryFormatter и JSON.Net с различными настройками, но столкнулся с проблемами самореференции и несамосеризуемыми. Я задал отдельный вопрос с деталями. Можете ли вы пролить свет и сможете ли вы его сериализовать? http://stackoverflow.com/questions/32109897/how-can-i-serialize-a-dbcompiledmodel-from-ef6 –