nuget 包 Microsoft.Data.SqlClient 是否可以与实体框架一起使用?

Sur*_*til 7 .net c# entity-framework entity-framework-6 microsoft-data-sqlclient

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

\n

但是,我不确定 EF6 是否与Microsoft.Data.SqlClient. 这是微软的一篇旧文章,它说 EF Core、EF 6 等已经\xe2\x80\x99t 尚未过渡到新的提供程序Microsoft.Data.SqlClient。所以,我有点困惑。

\n

System.Data.SqlClient下面的代码一切都运行良好

\n
public async Task<ICollection<int>> GetChildCustomerIdsAsync(int customerId)\n{\n   var sqlParameters = new List<SqlParameter>()\n   {\n      new SqlParameter("@CustomerId", customerId)\n   };\n\n   return await DbContext.Database.SqlQuery<int>("dbo.sp_GetChildCustomerIds @CustomerId=@CustomerId",\n                sqlParameters.ToArray()).ToListAsync().ConfigureAwait(false);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但是,当我切换到 时Microsoft.Data.SqlClient,我收到此错误:

\n
\n

System.InvalidCastException:SqlParameterCollection 只接受非空 SqlParameter 类型对象,而不接受 SqlParameter 对象。
\nat System.Data.SqlClient.SqlParameterCollection.ValidateType(对象值)
\nat System.Data.SqlClient.SqlParameterCollection.AddRange(数组值)
\nat System.Data.Entity.Core.Objects.ObjectContext.CreateStoreCommand(String commandText, Object [] 参数)
\nat System.Data.Entity.Core.Objects.ObjectContext.ExecuteStoreQueryInternalAsync.d__6f`1.MoveNext()

\n
\n

Eri*_*kEJ 8

不,EF 6 不能与 Microsoft.Data.SqlClient 一起使用,但我已经发布了一个可以使用的包。

NuGet包:ErikEJ.EntityFramework.SqlServer

文档:这里这里