Entity Framework 6.0 and Microsoft.Data.SqlClient



我们正在将本地数据库迁移到Azure。我们的应用程序使用实体框架6。一切工作正常使用System.Data.SqlClient使用认证微软活动目录密码一旦我们安装ADALSQL.dll。当您访问异常消息中引用的站点时,如果没有安装此dll,该站点将响应404。

遇到意外错误。
System.Data.Entity.Core。EntityException:底层提供程序在打开时失败。
System.Data.SqlClient。无法加载adalsql.dll (Authentication=ActiveDirectoryPassword)。错误码:0x2。更多信息请参见http://go.microsoft.com/fwlink/?LinkID=513072

几个星期前它是可用的。

在ADALSQL被弃用的情况下,我们试图让应用程序使用Microsoft.Data.SQLClient。我尝试了以下方法:

  • 新增Nuget包Microsoft.Data.SqlClient到项目
  • app.config文件
  • 增加如下内容
<system.data>
<DbProviderFactories>
<add name="Microsoft SqlClient Data Provider" 
invariant="Microsoft.Data.SqlClient" 
description="Microsoft SqlClient Data Provider for SQL Server" 
type="Microsoft.Data.SqlClient.SqlClientFactory, Microsoft.Data.SqlClient, Version=5.0.0.0, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5" />
</DbProviderFactories>
</system.data>
  • app.config文件的EntityFramework部分中的providers部分更新为以下
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<!--<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />-->
<provider invariantName="Microsoft.Data.SqlClient"  
type="Microsoft.Data.SqlClient.SqlClientFactory, Microsoft.Data.SqlClient, Version=5.0.0.0, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5" />
</providers>
</entityFramework>
  • 更新连接字符串以引用提供者Microsoft.Data.SqlClient
<add name="B2BEntities" 
connectionString="metadata=res://*/Models.B2B.csdl|res://*/Models.B2B.ssdl|res://*/Models.B2B.msl;provider=Microsoft.Data.SqlClient;provider connection string='data source=

在运行应用程序时抛出以下异常:

实体框架提供程序类型"Microsoft.Data.SqlClient"的"实例"成员。SqlClientFactory Microsoft.Data。SqlClient, Version=5.0.0.0, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5'没有返回继承自'System.Data.Entity.Core.Common.DbProviderServices'的对象。实体框架提供程序必须继承这个类,并且"Instance"成员必须返回提供程序的单例实例。这可能是因为提供商不支持实体框架6或更高版本;详见http://go.microsoft.com/fwlink/?LinkId=260882

任何指导如何得到这个工作将非常感激。

我已经发布了https://www.nuget.org/packages/ErikEJ.EntityFramework.SqlServer,它可以实现这一点。

相关内容

最新更新