nuget 包 Microsoft.Data.SqlClient 可以与 Entity Framework 一起使用吗?

Does the nuget package Microsoft.Data.SqlClient work with Entity Framework?

我的应用程序在 .NET Framework 4.7 上运行,我使用的是 Entity Framework 6.1.3。目前,我的代码使用了命名空间 System.Data.SqlClient 中的一些 类,例如 SqlParameter。我想切换到 Microsoft.Data.SqlClient.

但是,我不确定 EF6 是否与 Microsoft.Data.SqlClient 兼容。这是来自 Microsoft 的旧 article,它表示 EF Core、EF 6 等尚未过渡到新的提供程序 Microsoft.Data.SqlClient。所以,我有点困惑。

以下代码的 System.Data.SqlClient 一切正常

public async Task<ICollection<int>> GetChildCustomerIdsAsync(int customerId)
{
   var sqlParameters = new List<SqlParameter>()
   {
      new SqlParameter("@CustomerId", customerId)
   };

   return await DbContext.Database.SqlQuery<int>("dbo.sp_GetChildCustomerIds @CustomerId=@CustomerId",
                sqlParameters.ToArray()).ToListAsync().ConfigureAwait(false);
}

但是,当我切换到 Microsoft.Data.SqlClient 时,出现了这个错误:

System.InvalidCastException: The SqlParameterCollection only accepts non-null SqlParameter type objects, not SqlParameter objects.
at System.Data.SqlClient.SqlParameterCollection.ValidateType(Object value)
at System.Data.SqlClient.SqlParameterCollection.AddRange(Array values)
at System.Data.Entity.Core.Objects.ObjectContext.CreateStoreCommand(String commandText, Object[] parameters)
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternalAsync.d__6f`1.MoveNext()

不,EF 6 不适用于 Microsoft.Data.SqlClient,潜在更改的问题之一是 tjhat EF6 仍然支持 .NET Framework 4.0