Я попробовал предложения здесь. Мой EF уже был в последней версии (4.3 на момент публикации), но я установил SQL Server CE через nuget, а также EntityFramework.SqlServerCompact, который говорит: «Позволяет использовать SQL Server Compact 4.0 с Entity Framework». По-прежнему нет возможности использовать CE 4 в мастере при попытке обновить модель EDMX из базы данных. Если это все сделано в проекте MVC, тогда у меня есть возможность использовать CE 4 в диалоговом окне, изображенном в моем вопросе.
Я заставил его работать, хотя. Я просто использовал строку подключения, подобную той, которая генерируется при помещении EDMX в проект MVC.
<add name="EntityContainer"
connectionString="metadata=res://*/Model1.csdl|
res://*/Model1.ssdl|
res://*/Model1.msl;
provider=System.Data.SqlServerCe.4.0;
provider connection string="
Data Source=..\MyApp.MvcUI\App_Data\CE4DB.sdf""
providerName="System.Data.EntityClient" />
Затем я смог заставить дизайнера EF читать из базы данных. В качестве бонуса путь источника данных является относительным: D, так что другие разработчики, извлекающие свежую копию проекта из системы контроля версий, также смогут сразу использовать EF-дизайнер, не настраивая его. Я планирую в скором времени перейти на EF с первым кодом, но я хотел, чтобы сначала все это работало с EDMX, поскольку я знаю, как это сделать в настоящее время.
Очевидно, что во время выполнения строка подключения в MyApp.Domain не имеет значения, поскольку она считывает данные из файла конфигурации активного проекта. В этом случае Web.Config для проекта MvcUI. В котором строка подключения еще проще, поскольку путь упрощен.
<add name="EntityContainer"
connectionString="metadata=res://*/Model1.csdl|
res://*/Model1.ssdl|
res://*/Model1.msl;
provider=System.Data.SqlServerCe.4.0;
provider connection string="
Data Source=|DataDirectory|\CE4DB.sdf""
providerName="System.Data.EntityClient" />