Проблема в том, что вы говорите LINQPad обновить типизированный DbContext с помощью строки подключения к провайдеру вместо строки подключения Entity Framework.
Вы получите ту же ошибку в Visual Studio, если создадите свой типизированный DbContext со строкой подключения поставщика.
Строка подключения поставщика действительна только в том случае, если вы выполняете сначала код (в этом случае EF выводит модель). В вашем случае EDM является частью вашего проекта и встроен в вашу сборку; поэтому вы должны указать полную строку подключения EF, как указано в вашем app.config, чтобы EF мог ее найти:
metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=TestDatabase;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"
Другое решение — использовать следующую строку подключения, которая относится к файлу app.config:
name=TestDatabaseEntities
Если вы делаете это в LINQPad, убедитесь, что вы указали, где находится файл app.config, в предоставленном текстовом поле.
Более тонкий момент заключается в том, что файл T4 для вашего DbContext отличается от файла по умолчанию, который создает VS, тем, что в вашем DbContext отсутствует следующий код:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
Если это переопределение присутствует, оно дает более полезное сообщение об ошибке, если вы укажете неправильный тип строки подключения.
person
Joe Albahari
schedule
15.05.2011