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

我正在尝试使用Entity Framework Database First将数据列表从C#传递到SQL Server存储过程. SO和其他地方有很多关于这个问题的文章,但是将变量数据传递给存储过程以及从数据库返回变量数据的内容并不明显.他们也倾向于专注于调用存储过程的代码,但我无法做到这一点.

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

Warning 4 Error 6005: The function ‘uspGetBusyPersonsTVP’ has a parameter ‘list’ at parameter index 2 that has a data type ‘table type’ which is currently not supported for the target Entity Framework version. The function was excluded.

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

此MSDN站点https://msdn.microsoft.com/en-us/data/hh859577.aspx表示自EF 5.0以来已支持表值参数,但本文仅讨论返回数据.

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

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

EF是否会支持它我无法回答,因为我不为微软工作.无论是否可以,基于How to pass table value parameters to stored procedure from .net code的答案似乎是“是”,但是看起来你需要使用原始的ADO.NET来做到这一点.

转载注明原文:c# – 如何使用Entity Framework 6将数据列表传递给存储过程 - 代码日志