如何使用Entity Framework 6将数据列表传递给存储过程

Pet*_*ill 5 c# stored-procedures entity-framework

我试图使用Entity Framework Database First将数据列表从C#传递到SQL Server存储过程。SO和其他地方有很多关于该问题的文章,但是将变量数据传递到存储过程以及从数据库返回变量数据的引用并不明显。他们还倾向于将重点放在调用存储过程的代码上,但是我做不到。

在SSMS中创建并测试了用户定义的表类型和存储过程。该问题发生在C#中。更新模型(.edmx文件)时,发出以下警告:

警告4错误6005:函数“ uspGetBusyPersonsTVP”在参数索引2处具有参数“列表”,该参数的数据类型为“表类型”,目标实体框架版本当前不支持该数据类型。该功能被排除在外。

在模型浏览器中进行的检查显示,已在模型中创建了存储过程,但仅使用非TVP参数。

这个MSDN网站https://msdn.microsoft.com/zh-cn/data/hh859577.aspx说,自EF 5.0开始就支持表值参数,但本文仅讨论返回数据。

我刚刚完成更新,现在正在使用Visual Studio 2015社区,.Net 4.6和Entity Framework 6.1.3。有谁知道TVP是否可以传递给存储过程,或者是否有可能被支持?

Cra*_* W. 0

您引用的文章讨论了表值函数(即返回表的用户定义函数),而不是将表值参数传递给存储过程。你正在比较苹果和大象。

我无法回答 EF 是否会支持它,因为我不在 Microsoft 工作。无论是否可以完成,根据如何将表值参数从 .net 代码传递到存储过程,答案似乎是“是” ,但是您似乎需要使用原始 ADO.NET 来完成此操作。