微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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来做到这一点.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐