DotNetCore系列:解决"The SqlParameterCollection only ac

近段时间对公司的.NET Core项目升级为3.1,因为我们项目中使用的ORM框架是EF Core,所以顺带就把EF Core升级为3.1。

升级后对项目做了基本的调试和运行,发现在执行存储过程的时候,居然神奇的报错了。因为我并没有改动任何代码,所以非常疑惑为什么升级之后,原来好端端的代码会出错了!!!

<code>ystem.InvalidCastException: The SqlParameterCollection only accepts non-null SqlParameter type objects, not SqlParameter objects.
at Microsoft.Data.SqlClient.SqlParameterCollection.ValidateType(Object value)
at Microsoft.Data.SqlClient.SqlParameterCollection.Add(Object value)
at Microsoft.EntityFrameworkCore.Storage.Internal.RawRelationalParameter.AddDbParameter(DbCommand command, Object value)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.CreateCommand(RelationalCommandParameterObject parameterObject, Guid commandId, DbCommandMethod commandMethod)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteNonQueryAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.ExecuteSqlRawAsync(DatabaseFacade databaseFacade, String sql, IEnumerable`1 parameters, CancellationToken cancellationToken)
/<code>

经过仔细查阅微软关于EF Core升级的文档,发现是因为EF Core3.0之后,有一个依赖包变更了,由原来的

<code>> using System.Data.SqlClient/<code>

变更为

<code>> using Microsoft.Data.SqlClient/<code>

通过更改新的引用依赖包后,执行存储过程时就恢复正常了。

详细的一些发布说明大家可以查看微软的官方文档:

<code>> [EF Core 3.0 中包含的中断性变更](https://docs.microsoft.com/zh-cn/ef/core/what-is-new/ef-core-3.0/breaking-changes)
> /<code>


分享到:


相關文章: