【发布时间】:2018-10-24 16:48:44
【问题描述】:
自从将 Windows 10 更新到 1803 后,每当我运行一个 EF 查询来连接一个接受标量参数的表值函数时,我都开始收到此错误。
消息:传入的表格数据流 (TDS) 远程过程调用 (RPC) 协议流不正确。参数 2 (""):数据类型 0x00 未知。
堆栈跟踪:在 System.Data.SqlClient.SqlCommand.c.b__180_0(Task1 结果)在 System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke() 在 System.Threading.Tasks.Task.Execute() --- 堆栈跟踪结束 以前抛出异常的位置---在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.d__c.MoveNext()
我在 .NET 4.6 框架项目中使用 Entity Framework v6.2。我验证了相同的代码在另一台使用 Windows 10 1709 的计算机上执行没有问题。我将计算机更新到 Windows 10 1803 没有其他更改,我开始收到上述错误。导致错误的代码:
var query = from fs in db.ViewWithInformation
join e in db.GetEventsForPerson(personnelId) on fs.Event_Id equals e.Event_Id
where !fs.Is_Deleted
select fs;
return await query.ToArrayAsync();
如果我删除对 db.GetEventsForPerson 的连接,查询就会运行。上面 EF 查询生成的 SQL 在 SSMS 中运行良好。
2018 年 5 月 15 日编辑:我已确认这是由 .NET Framework 4.7.2 造成的。我在我的 Windows 10 1709 计算机上手动安装了 .NET 4.7.2,然后错误再次启动。
【问题讨论】:
-
我有完全相同的问题,相同的代码适用于 Windows 7。我尝试了许多不同的方法,但仍然无法正常工作。我设法让它工作的一种方法是使用非异步方法
-
我在 GitHub 上打开了一张票,并在那里引用了这个问题:github.com/aspnet/EntityFramework6/issues/537
-
感谢您帮助确认我没有疯。很高兴了解异步部分。我在我的主要工作 PC 上将系统还原回 1709,然后我又恢复了运行。
-
更新 - 工程师开发了一个 SQL DB 服务器端修复程序,并正在通过安全部署过程推出。预计 24-48 小时。
标签: sql-server azure-sql-database sqlclient .net-4.7.2