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
我的应用程序在 .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