在代码中访问EF6会在EntityFramework.dll

时间:2015-10-27 10:45:51

标签: vb.net visual-studio-2013 .net-4.0 entity-framework-6

基于.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拆分为自己的密钥(databaseinstanceuserpassword) Ap.config。
为此,我使用EntityConnectionStringBuilderEntityConnectionProviderConnectionStringMetadata建立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>

任何想法,为什么会发生这种异常?

0 个答案:

没有答案