我们正在将本地数据库迁移到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,它可以实现这一点。