DotNetCore系列:解决"The SqlParameterCollection only accepts non-null SqlParameter type objects"问题

近段时间对公司的.NET Core项目升级为3.1,因为我们项目中使用的ORM框架是EF Core,所以顺带就把EF Core升级为3.1。
升级后对项目做了基本的调试和运行,发现在执行存储过程的时候,居然神奇的报错了。因为我并没有改动任何代码,所以非常疑惑为什么升级之后,原来好端端的代码会出错了!!!

System.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)

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

using System.Data.SqlClient

变更为

using Microsoft.Data.SqlClient

通过更改新的引用依赖包后,执行存储过程时就恢复正常了。
详细的一些发布说明大家可以查看微软的官方文档:

EF Core 3.0 中包含的中断性变更

大家有问题或者想和我交流的么也可以关注我的微信公众号:
在这里插入图片描述

发布了18 篇原创文章 · 获赞 2 · 访问量 1472

猜你喜欢

转载自blog.csdn.net/wangjiansui/article/details/105313250
今日推荐