的問題是,你告訴LINQPad新的您鍵入的DbContext與提供商連接字符串,而不是一個實體框架的連接字符串。
如果使用提供程序連接字符串構造類型化的DbContext,則在Visual Studio中會出現相同的錯誤。
只有在代碼優先的情況下(在這種情況下EF推斷模型),提供程序連接字符串纔有效。在你的情況下,EDM是你的項目的一部分,並嵌入你的程序集;
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文件:所以在你的app.config規定,使EF可以找到它,你必須指定完整EF連接字符串
name=TestDatabaseEntities
如果你在LINQPad中這樣做,請確保在提供的文本框中告訴它app.config文件的位置。
一個更微妙的一點是,你的DbContext的T4文件到VS創造,在你的DbContext缺少以下代碼默認值不同:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
如果覆蓋時,它給如果指定錯誤類型的連接字符串,則會提供更有用的錯誤消息。