基于.NET 4.0和EF 6.1,我创建了一个项目名称Database with a Entity Model,以通过Visual Studio 2013中的Designer访问SQL Server实例。 此外,还有一个控制台应用程序(也是.NET 4.0)试图使用数据库项目的实体。
底层数据库的凭据存储在密钥<connectionStrings>
中的控制台应用程序的App.config中。
以下列方式创建DbContext时,我可以完美地访问实体:
var db = new MyEntities();
var o1 = db.Buildings.First();
MyEntities是Entity Framework自动创建的类,继承自DbContext
。
出于某些兼容性原因,我正在尝试将connectionString
拆分为自己的密钥(database
,instance
,user
,password
) Ap.config。
为此,我使用EntityConnectionStringBuilder
与EntityConnection
,ProviderConnectionString
和Metadata
建立Provider
。它看起来像这样:
Dim sqlBuilder = New SqlConnectionStringBuilder()
sqlBuilder.MultipleActiveResultSets = True
sqlBuilder.DataSource = "database instance"
sqlBuilder.InitialCatalog = "database"
sqlBuilder.UserID = "user"
sqlBuilder.Password = "password"
Dim providerConnectionString = sqlBuilder.ToString()
Dim metaData = @"res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl"
Dim entityConnectionBuilder As New EntityConnectionStringBuilder() With { _
.Metadata = metaData, _
.ProviderConnectionString = providerConnectionString, _
.Provider = "System.Data.SqlClient"}
Dim s = entityConnectionBuilder.ToString()
entityConnection = New EntityConnection(s)
在我的控制台应用程序中,我致电:
var db1 = new MyEntities(entityConnection);
var o2 = db1.Buildings.First();
执行最后一行时,将抛出以下异常:
EntityFramework.dll中出现未处理的“System.NotSupportedException”类型异常
附加信息:无法确定连接类型'System.Data.EntityClient.EntityConnection'的DbProviderFactory类型。确保在应用程序配置中安装或注册了ADO.NET提供程序。
控制台应用程序的App.config包含以下内容:
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
任何想法,为什么会发生这种异常?