【问题标题】:Entity framework 6.x doesn't add table valued parameter while adding in model实体框架 6.x 在模型中添加时不添加表值参数
【发布时间】:2016-05-05 03:10:52
【问题描述】:

我正在尝试通过模型浏览器添加存储过程,SP 有一个表值参数。 SP 添加了函数导入,但缺少表值参数。 SP 有 5 个参数,包括 tvp,但我只能看到 4 个参数,并且缺少 tvp 参数。

我用谷歌搜索找到原因和解决方案。每个人都建议使用实体的 ExecuteStoreProcedure 方法。 例如Entity Framework Stored Procedure Table Value Parameter

但我想使用在我们使用模型浏览器添加 SP 时创建的函数导入,所有其他 SP 都可以正常工作,因为它们没有 tvp。 注意:使用 EF 6.1.1 和 .net 4.5,以及 VS2013

问:C# 和 EF 是否支持通过 TVP 导入 SP?

【问题讨论】:

  • 同样的问题!不幸的是没有答案:'(
  • @Virus721 好吧,不,它不会发生,所以不它不会。只需手动将代码添加到扩展上下文的部分类中。

标签: c# entity-framework stored-procedures


【解决方案1】:

已提交关于该问题的 github 帖子,涉及 EF 核心,但也适用于 EF 6:

  • 存储过程仅在 Entity Framework Core 的原始/内联 SQL 中受支持。
  • 仅在 Entity Framework Core 的原始/内联 SQL 中支持表值参数,因为我们只需通过任何 SqlParameter
    到底层 ADO.NET 提供程序。
  • 我们最初使用“Entity Framework 7”作为 EF Core 的名称,但没有发布名为“Entity Framework 7”的产品,所以我没有
    100% 您指的是哪种产品。

Microsoft 最初的想法是让 EF 6 为新的 EF 核心标准做好准备,因此他们决定仅在原始/内联 sql 上支持表值参数

无论哪种方式,您都将 SqlParameter 传递给底层 ado.net 提供程序,因此实际上没有理由通过 Functions Import 传递参数。

所以是的,你可以使用ExecuteStoreProcedure,因为微软会适当地提示你这样做,或者只是通过扩展部分类并自己实现来添加代码。

【讨论】:

    猜你喜欢
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    相关资源
    最近更新 更多